Play Framework 1.0과 2.0의 주요 차이점은 무엇인가요?
최근 Play Framework 2.0 릴리스를 통해 Play Framework 1과 2의 주요 차이점을 높은 수준의 관점에서 요약 할 수 있는지 알고 싶습니다.
나는 이미 몇 가지를 컴파일했습니다 (플레이 1.0-> 플레이 2.0) :
- 템플릿 엔진 : Groovy Pages-> Scala 템플릿
- 지속성 : 최대 절전 모드-> Ebean
- 언어 지원 : Java-> Scala, Java
- 동적 컴파일 : 바이트 코드 삽입-> SBT를 통한 동적 컴파일
- 빌드 시스템 : 해당 사항 없음-> SBT
- 확장 성 : 모듈, 플러그인-> 하위 프로젝트, 플러그인, SBT 플러그인
또 뭐야? Akka?
물론 여기에 몇 가지 중복 된 목록이 있습니다.
이전 버전과의 호환성 중단 (처음부터 다시 작성)
스칼라 대 자바로 프로그래밍 된 코어 (협업을 위해 스칼라를 배워야 함)
템플릿 용 scala (하지만 마이그레이션을 용이하게하기 위해 그루비 템플릿에 대한 작업이 모듈로 수행되고 있음), 따라서 각 매개 변수의 유형을 지정해야합니다.
파이썬 스크립트 대신 sbt 콘솔
기본 제공 솔루션 대신 종속성 해결을위한 sbt (play 종속성 명령)
모듈 가용성, 분명히 모두 마이그레이션하는 데 약간의 시간이 걸립니다.
자바의 경우 최대 절전 모드 대신 ebean을 선호합니다 (하지만 최대 절전 모드를 사용할 수 있음).
scala의 경우 anorm과 함께 제공됩니다 (하지만 다른 라이브러리를 사용할 수 있음).
더 모듈화되고 다른 구성 요소를 선택하기 쉽습니다.
더 많은 타입 안전성-뷰와 심지어 라우트가 컴파일 타임에 확인됩니다.
더 나은 성능
typesafe 지원, typesafe 스택 의 일부
덜 마술, 그렇게 많은 바이트 코드 생성 및 유사한 것
더 표준, (플레이 프로젝트는 표준 sbt 프로젝트입니다)
다른 컨트롤러 API (더 자세한 정보, IMHO) 간단한 플레이 1.x 크 러드 컨트롤러 와 유사한 플레이 2.0 컨트롤러 를 비교할 수 있습니다.
scala는 일급 시민이지만 java도 동일하게 지원됩니다 (각각에 대한 기본 API가 있음).
핫 리 컴파일이 더 느립니다 (아직 베타 버전이므로 해결되기를 바랍니다)
scala IDE 지원은 Java만큼 성숙하지는 않지만 멋지게 발전하고 있습니다.
akka에 위임 된 비동기 지원
nosql dbs와 같은 다양한 종류의 데이터 소스에 대해 더 잘 준비 됨
자세한 내용은 play 2.0 페이지 ( 여기에서 스페인어 번역 가능 ) 및 RC1 문서를 참조 하세요.
어쨌든, 가장 큰 차이점은 플레이 1.x가 j2ee에서 탈출하면서 자체 스택을 구축하려고했지만 이제는 scala, akka, sbt 및 회사의 지원을 기반으로하는 새롭고 대체 스택의 일부라는 것입니다. 타입 세이프처럼 ...
다음 사항이 중요하다고 생각합니다. 일부는 찬성이며 일부는 콘트라입니다. 선호하는 버전을 직접 확인해야합니다.
코어는 Scala로 작성되었으므로 Scala 개발자가 아닌 경우 버그를 혼자서 쉽게 수정할 수 없습니다. 이것이 플레이의 강점 1.2. 또한 문서가 좋지 않으면 손실됩니다. 플레이 1.2에서는 코드를 간단히 살펴볼 수 있습니다. Eclipse를 사용하면 참조를 쉽게 검색 할 수있는 IDE가 있습니다. Scala와 비슷한 IDE가 있는지 잘 모르겠습니다. 이클립스 인텔 리즈가 잘 작동한다고 들었지만 자신의 경험은 없었습니다.
구성 요소는 2.0에서 더 느슨하게 결합됩니다. Play 2.0에서는 선호하는 템플릿 엔진 또는 지속성 레이어를 쉽게 선택할 수 있습니다. 1.2에서는 지속성을 위해 JPA 이외의 것을 선택하는 것이 더 어려웠습니다.
Scala는 이제 일류 시민이므로 Scala 또는 Java로 애플리케이션을 작성하려는 경우 자유롭게 선택할 수 있습니다.
다른 프레임 워크에 대한 종속성이 더 높습니다. 예를 들어 이제 그들은 Scala와 Akka가 필요합니다. 둘 다 훌륭하지만 복잡합니다. 따라서 이러한 프레임 워크 중 하나에 오류가 있으면 큰 문제가 발생할 수 있습니다. 플레이 1.2에서는 Hibernate에 대한 그러한 위험만을 볼 수 있습니다.
"Everything"은 이제 형식이 안전하며 컴파일러에서 확인할 수 있습니다.
Python을 SBT로 변경하면 개발 시스템에 훨씬 더 많은 메모리가 필요합니다. Scala 컴파일러에는 최소 512MB RAM이 필요합니다. 이는 연속 빌드 서버에서 문제가 될 수 있습니다.
물론 Codemwnci가 언급 한 작은 세부 사항이 많이 있습니다.
귀하의 목록은 아주 좋은 시작입니다. 내 목록은 몇 가지 추가 항목과 유사합니다.
- 템플릿이 Groovy에서 Scala로 이동했습니다.
- Scala는 선택적 플러그인이 아닌 일류 시민이됩니다.
- 특히 템플릿에서 형식 안전성에 더 중점을 둡니다.
- Python에서 SBT로
- Ebean으로 최대 절전 모드
- Akka 모듈이 아닌 Play 1.x의 비동기 기능을 보완하는 Akka
- 코어에서 사용 가능한 Anorm (Scala 플러그인이 아닌)
- 더 적은 동적 요소와 더 많은 컴파일로 인한 프로덕션 성능 향상
- TypeSafe 스택에 통합
예상대로 목록 사이에 중복이 있습니다. 또한이 목록은 2011 년 11 월 기준이며 플레이 2는 아직 베타 버전입니다.
There are some very good answers here, I just wanted to add a few small points and provide details that became clearer with time.
In-Browser-Reporting: Play 2 reports on errors in Javascript ( Using google's closure compiler) and CSS files in the browser as well and not only Java/Scala files. This is really cool.
Deployment as WAR: Play 2 doesn't still officially support deployment or export as a WAR. A plug-in exists that is supposed to provide such support, but is in beta with some known issues. Complete support of all Play 2 features is not really possible without Servlets 3.1 containers, which will take at least half a year, probably more.
Plug-ins: For now, there are still many more for play 1, if you are depending on some plug in, make sure it exists for play 2 as well.
IDE support: IntelliJ 12 should come with built-in support for play 2. You can already get the EAP ( I ran out of allowed hyper links so you will have to google).
Subjective opinion: I feel as if Play 2 sacrificed some simplicity for support for more advanced features and more complete type-safety. I'm not saying Play 2 is hard or not intuitive, just less so than Play 1.
Play 1 was a web framework for web developers by web developers. Play 2 is a forward looking web framework for web developers by web developers.
So to say, there was a slight shift in focus, ease of use is no longer the primary goal, but one of two primary goals. This is of course only my opinion and I know very little.
You can find another take on the topic at the following blog post: http://blog.awfbeat.com/post/22314115684/impressions-of-play-framework-1-2-4-vs-2-0
Summarizing from this article:
- Asset pipeline for direct use of Google Closure Compiler, CoffeScript and LESS
- Everything is compiled, even the routes file
- Low memory footprint for a running app
- Async/reactive programming with Iteratee/Enumerator
- As you mentioned, Scala, Akka, ...
ReferenceURL : https://stackoverflow.com/questions/8189893/what-are-the-major-differences-between-play-framework-1-0-and-2-0