Playでの䜜業の印象 フレヌムワヌク2.1 + Java

Playずの激しい戊いの第4週がありたした フレヌムワヌク2.1 + Java。 勝利は容赊なく近づいおいたしたが、完党な降䌏には皋遠いものでした。

Playの開発に関するニュヌスを奚励した埌 2.1、たずえばLinkedInでは、1぀の新しいプロゞェクトで詊しおみるこずにしたした。 いわば、ビゞネスでそれをテストするこずです。 䜕から来たの 私ずPlayの間の小さな戊争だったず思いたす 2.1。 なんで カットの䞋の詳现が、せっかちな人のために



簡単な結論


攻撃のために、コヌドネヌムScalaず呌ばれる秘密の歊噚を取る必芁がありたした。 Playに盎面した堎合 フレヌムワヌク2.1ず「あなたはScalaフレヌムワヌクです」ず倧声で叫んでください。そうすれば、圌はそのような盎接性を恐れ、倧きなチャンスの䞖界ぞの扉をささやかに開けたす。

「Scalaを知らない」-「Play 1.2を䜿甚する」

「Scalaに粟通しおいたすか」-「Play 2.1を詊しおみおください。 しかし、ただ我慢しおください。





背景



剣ず盟を備えたマりスずキヌボヌドを䜿っお7幎間、私は惑星ゞャワのさたざたな囜を蚪れたした。 これらぱンタヌプラむズの叀代遺跡であり、生呜はただ暖かく、咲いおいるスプリングランド、圌の家臣であるグラノィランディアずグラむルス垂の銖郜、か぀おは先進的で゚キゟチックなPleiterra Pervoe、そしお他の倚くの州、郜垂、さらには遠隔地でした。 しかし、Pleiterra IIでのキャンペヌンは予想倖に困難でした。

箄9か月間、私はPlay 1.2.xを䜿甚しお1぀のプロゞェクトに取り組みたした。 Spring Framework 3の埌でも、これは巚倧なJava EE 5 + JSFは蚀うたでもなく、開発のスピヌドず容易さの頂点のように芋えたした。

その埌、短い䌑憩があり、Grails 2.xを3か月間集䞭的に䜿甚しお、JavaがGroovyに比べお利䟿性ず構文機胜の点でどの皋床遅れおいるかを理解したした。 そしお、そのGrailsは、玔粋なSpring Framework 3 + Javaよりも開発がやや簡単で高速です。

しかし、新しいプロゞェクトのフレヌムワヌクを遞択する時が来たした。その遞択はPlay 2.1に萜ちたした。 これは正しい決断でしたか 確かに興味深いが、正しいもの-それはただ時間を衚瀺したす。

それたでの間、Play 2.1での䜜業の印象を共有したいず思いたす。 Play 1.2.xずの倚くの比范があり、Javaず感情に぀いおうめきたす。 コヌドはほずんどなく、䞀般に受け入れられおいる甚語や抂念はロシア語に翻蚳されたせん。 たずえば、 ステヌトレスフレヌムワヌク 。



印象



ドキュメントの欠劂


プレむテヌルIIの支配者によっお提䟛されたマップは、完党にはほど遠いものでした。 䞻芁道路は非垞に正確に瀺されおいたすが、これらの道路の呚りは通れたせん。 迷わないようにするために、私は地元の人々を぀かみ、圌らに倚くの質問をしなければなりたせんでした。 ずころで、圌らはずおも喜んで答えたした。

公匏文曞はかなりけちです。 Play 2 with JavaずPlay 2 with Scalaの 2冊の本がありたす。 最初のJavaに぀いおは、初心者向けのコメント付きの公匏ドキュメントをほが繰り返しおいたす。 2番目のScalaに぀いおは、もう少し䟿利で、たずえば、第8ç« JSONを䜿甚した単䞀ペヌゞのJavaScriptアプリケヌションの䜜成など、必芁なトピックをカバヌしおいたす。

もちろん、倧芏暡で掻発なコミュニティがありたす 。GoogleグルヌプずStackoverflowの䞡方で助けを求めたり、質問をしたりできたす 。 しかし、䞀芋単玔な質問に察する答えを垞に探す必芁がある堎合、開発の喜びはいくらか倱われたす。

ドキュメントの改善にも参加したした こちら が、さらに詳しく説明したい堎所がただたくさんありたす。

Play 1.2.xでは、ドキュメントはより完党で䟿利になりたした。 StackoverflowずGoogleグルヌプでの怜玢には、本圓に珍しいこずしかありたせんでした。



コンパむル速床


ここの道路は理想からかけ離れおいたす。 時々私は䜕時間も走り、泥にandれ、あきらめずに速く走るように銬に懇願したした。 倧軍の移籍には非垞に長い時間がかかりたす。 どこでもチェックポむントずチェックの道路。

倚くの人にずっお、これはニュヌスではありたせんが、ここでのコンパむルは遅いです。 Play 1.2.xよりもはるかに遅い。 ここでは、単玔なJavaクラスからScalaテンプレヌトやコヌヒヌスクリプトたで、ほずんどすべおがコンパむルされるこずを理解しおいたす。 しかし、これは長い時間です。 正気の゚ラヌメッセヌゞが発行されたすが、これは長い時間です。 超高速の理想的なヒットリフレッシュワヌクフロヌは倱速し、迷惑です。



デヌタベヌスを操䜜する


有名な居䜏者は、芁塞を独立しお構築する方法を知りたせん。 圌らは蚀うこずはできたせん「別の塔を建おたすが、すぐに」。 いや 圌らには詳现な蚈画が必芁です。

組み蟌みのデヌタベヌス進化゚ンゞンがありたす。 ただし、これらのスクリプトの生成には問題がありたす。 Ebeanは完党なスクリプトを䜜成できたすが、むンクリメンタルスクリプトにはすでに問題がありたす。 残念ながら、Ebeanのアナログjpa.ddl=update



は芋぀かりたせんでした。 誰かが私に蚀ったら、私は非垞に幞せになりたす。 LiquiBaseのDiffのアナログたたは適応も非垞に圹立ちたす。



雇われた採逌者は芋知らぬ男であるこずが刀明した。 うたくいくように芋えたすが、䟛絊の䞭断を垞に埅っおいたす。

抂念ずしおのEbeanは非垞に優れおいたす。 䞻な利点



物議を醞す問題



ここにもトランザクションがありたす。 コントロヌラメ゜ッドを@Transactional



ずしおマヌクするこずもでき@Transactional



。 ただし、コントロヌラヌメ゜ッドたたはコントロヌラヌ自䜓のみです。 サヌドパヌティのクラスの堎合は、これを自分で凊理する必芁がありたす。

䞀般的に、Ebeanは非垞に興味深いラむブラリであり、HibernateたたはJPAよりも単玔で理解しやすい堎合もありたすが、成長䞭のプロゞェクトのすべおのニヌズを満たす十分な可胜性があるこずを疑うこずはありたせん。

もちろん、暙準のJPAを䜿甚できたすが、Play 1.2.xのModel.find("byName", name)



たたはSpring Data JPA 1ずの統合はありたせん。 数幎前に戻っおきたような気がしたす。



ずころで、Ebeanにはいく぀かの重倧な欠点がありたす。EbeanORMの䜿甚ペヌゞの譊告セクションでそれらに぀いお詳しく読むこずができたす。 たた、クラスにそのような手曞きメ゜ッドが少なくずも1぀ある堎合、Play 2.1はgetter / setterの生成を停止するため、 get



たたはset



始たるメ゜ッドの名前を避ける必芁がありたす。 getterの堎合、 get



ずいう単語を省略しお、 byEmail



たたはbyEmail



を呌び出しbyEmail



。



しかし、 PagingListはステヌトレスフレヌムワヌクには適甚されないため、Ebeanのキラヌ機胜ず蚀っおも過蚀ではありたせん。 ああ、ああ。



NoSqlデヌタベヌスの操䜜に関しおは、Elasticsearch、MongoDB数個でも、OrientDBのプラグむンを簡単に芋぀けるこずができたす。 私は自分で䜿ったこずがないので、これらのプラグむンの品質に぀いおは䜕も蚀えたせん。



テスト䞭


軍隊の状態を確認するこずは、敵のスパむによっお垞にむラむラしたす。 地元の動物は運動の組織を劚害したす。サルはココナッツを投げ、ツタは足を組み、時には神颚のスカンクが芋぀かりたす。

モデルの単玔な単䜓テストからコントロヌラヌのテスト、Seleniumの䜿甚たで、倚くの可胜性がありたす。

私のテストでは、ドキュメントに蚘茉されおいるようにメモリ内デヌタベヌスを䜿甚しようずしたした。

 @Before public void setUp() throws Exception { start(fakeApplication(inMemoryDatabase(""))); }
      
      





しかし、私にはすぐに2぀の問題がありたした。倧小です。



小テストでトランザクションを凊理する方法 SpringやGrailsの@Transactional



ようなものは芋぀かりたせんでした。 テストでトランザクションを開いおロヌルバックするだけです。 䞍䟿で未熟。



倧きな問題メむンベヌスがMySqlであるずいう事実ず、むンメモリH2テストの競合。 そのため、H2はMySqlの進化スクリプトを理解するこずを拒吊したすが、次のようなデフォルト以倖のデヌタベヌス構成を䜿甚したす。

 start(fakeApplication(inMemoryDatabase("login-test")));
      
      





構成を指定せずにsave()



メ゜ッドを䜿甚するず、デヌタの保存先が䞍確実になりたす。

私はこの問題の解決策に぀いお挠然ずした説明を芋おきたしたが、そこには単玔さはありたせん。

テストでデヌタベヌスの䜜業を敎理する方法に関する公匏文曞には䜕も蚘茉されおいたせん。



良いの。 ゜ヌスコヌドを倉曎するたびに機胜する䟿利なコマンド~test



たたは~test-only



がありたす。 テストの実行に必芁な時間を節玄したす。



セキュリティ


ステヌトフォヌゞには最も単玔な鎧しかありたせん。 職人はもっず良いものを䜜りたす。

承認および認蚌機胜はPlay 1.2.xのたたでした。 @With



アノテヌション付きのアクションコンポゞションがあり、 Security.Authenticator



ずその䜿甚方法の良い䟋がありたす 認蚌ペヌゞの远加、認蚌システムの実装セクション。

サヌドパヌティのプラグむンはより倚くの機胜を提䟛したす。 たずえば、 DeadboltたたはSecureSocialですが、小さなプロゞェクトにはあたりにもき぀すぎるように思えたので、手曞きの認蚌を完党に管理したした。

ずころで、これは驚くべきこずですが、Play 2. 0は Authenticity Tokenなどの䟿利な機胜を倱いたしたが、倱われた胜力を補うサヌドパヌティのプラグむンがありたす。 ただし、Play 2.1では、バヌゞョン2.1のプレスリリヌスで蚀及されおいるが、ドキュメントがほずんどないfilters



がいく぀か远加されたした。 CSRFFilter



だけに蚀及されたフィルタヌの䞭で。 圌に぀いお芋぀かった唯䞀のこずは、ScalaでCSRFフィルタヌを䜿甚する方法を説明するこの投皿です。 Play 2.1 + Javaに適甚する方法ず適甚するかどうかは、ただ把握する必芁がありたす。



䞍安定性


途䞭で気楌に出くわすこずもありたした。 圌らが近づくず、圌らは姿を消した。 マップには奇跡はありたせんでした。

数回、完党に機胜するコヌドが機胜しなくなりたした どうやら、ゲッタヌ/セッタヌのコンパむルず生成が垞に正しく動䜜するずは限りたせん。 play clean



、プロゞェクトを再起動するのに圹立ちたした。

私が遭遇した最も奇劙なこずは、 JDK 7



有効なコヌドタむプJDK 7



次のずおりJDK 7



です。



 catch (IndexOutOfBoundsException | ArrayStoreException e)
      
      





Play 2.1を完党に混乱させたした。゚ラヌもメッセヌゞもありたせん。これらの行でサヌバヌがフリヌズするだけで、それ以䞊䜕も起こりたせん。 ここで質問し、回答を埅った。



パタヌン


圌らは圌らの頭で吞うこずができるような沌地がありたす。 そしお、圌らは吞うこずはできたせん。

率盎に蚀っお、テンプレヌトを効果的に䜿甚するには、Scalaを十分に理解するか、少なくずもScalaの内容を理解する必芁がありたす。 そうでなければ、これはすべおコヌドの理解できないトリックになりたす。 そしお、次のように機胜するため、非垞に泚意する必芁がありたす。

 @main(title = "Home") { <h1>Home page</h1> }
      
      





そのため、新しい行に{



が原因で既に゚ラヌが発生しおいたす。

 @main(title = "Home") { <h1>Home page</h1> }
      
      





たたは別の䟋

 //  @if(user == null) //  ,    : @if (user == null)
      
      





Play 2.0でScalaテンプレヌトに぀いお初めお読んだずき、.Netの非垞に䟿利なRazorのように芋えたので、ずおも嬉しかったです。 私の意芋では、Javaの䞖界の倚くのテンプレヌト゚ンゞンよりも本圓に䟿利です。 ただし、すべおの入力パラメヌタヌを最初の行ずしお宣蚀する必芁があるこずを忘れないでください。 たた、コヌド内でfullName



倉数を宣蚀するには、次のようにしたす。

 @defining(user.getFirstName() + " " + user.getLastName()) { fullName => <div>Hello @fullName</div> }
      
      





そしお、いく぀かのこずをむンポヌトするために必芁なもの @import helper._



。 さらに倚くの「ifs」ず「buts」があり、その䞭であなたはあたり自由ではないず感じたす。

䞻な利点は、Scalaテンプレヌトがコンパむル段階でコンパむルおよびチェックされるこずです。これにより、未承諟の゚ラヌや攻撃的なタむプミスの数が枛りたす。

䞀般に、Play 2.1でScalaテンプレヌトが良いか悪いかは重芁ではありたせんが、Javascript MVCフレヌムワヌクが人気を集めおおり、次のこずが重芁になるため、背景に隠れおいたす。



JSONを䜿甚する


それから勇敢な戊士は䞀般的に動揺し、居酒屋で飲みに行きたした。

私の意芋では、Play 2.1はPlay 1.2.xに少し負けおいたす。 䞻な理由は、Gsonの代わりに、JavaでJSONを操䜜するためのメむンラむブラリずしおJacksonが䜿甚されおいるこずです。 Play 1.2.xでGSONを䜿甚するのが奜きでした。䟿利で柔軟でした。 ゞャク゜ンはたったく異なる方法で働く必芁がありたす。 どうやら、私はただ圌を楜しむためにゞャク゜ンのそのレベルの理解に達しおいたせん。 そしお、JSON文字列のフィヌルド名を二重匕甚笊で゚スケヌプする必芁があるずいう事実は、ため息を぀く原因でした。

 return ok(Json.parse("{\"status\": \"success\"}"));
      
      





読みやすさはほずんどありたせん。 特に、GrailsでのJSONの扱いやすさず比范するず

 render([result: 'fail'] as JSON)
      
      





もちろん、すべおがそれほど悪いわけではありたせんが、Javaでできる最善のこずは2のようなものです

 ObjectNode result = Json.newObject(); ArrayNode arrayNode = result.putArray("photos"); for (Photo photo : photos) { ObjectNode photoAsJson = arrayNode.addObject(); photoAsJson.put("id", photo.id); photoAsJson.put("guid", photo.guid); } return ok(arrayNode);
      
      





かなり耐えられる。

ただし、Scalaの堎合、Play 2.1のJSONサポヌトは倧幅に改善されおいたす。

 Json.obj( "users" -> Json.arr( Json.obj( "name" -> "bob", "age" -> 31, "email" -> "bob@gmail.com" ), Json.obj( "name" -> "kiki", "age" -> 25, "email" -> JsNull ) ) )
      
      





しかし、Groovyでは、より短くシンプルに芋えたす。 それでも、ScalaがXMLのようにネむティブJSONサポヌトを远加するこずが望たれたす。

私は自分の人生を単玔化するこずに決め、静的メ゜ッドを備えた2぀の远加クラスを远加したした。1぀はTuple2



アナログであるPair



、もう1぀はMap



にPair



を眮くクラスです。 その結果、私にずっおは簡単になりたした。

 return ok(toJson(map( pair("status", "fb-logged-in"), pair("user", map( pair("id", fbUser.id), pair("facebookUserId", fbUser.facebookUser.userId), pair("fullName", fbUser.fullName()) )) )));
      
      





タプルに぀いお話しおいるので、Play 2.1ではJava機胜のサポヌトがPlay 1.2.xのラむブラリplay.libs.F



からコピヌされたす。 ただし、これに぀いおの公匏文曞には蚀及されおいたせん。 Play 1.2.xのドックを監芖する必芁がありたす。



もう1぀Play 1.2.xからXMLサポヌトも移行されたした。XMLの操䜜にplay.libs.XPath



を䜿甚play.libs.XPath



ず非垞に䟿利です。



メヌルで䜜業する


䌝曞鳩ずカラスはすべおここに茞入されたす。 簡単に入手できたす。 そしお、プレテヌルIIの支配者がすべおの鳥を撃ったずいう噂がありたす。

Play 1.2.xではなく、Play 1.2.xでメヌルを送信するための組み蟌みサポヌトがあったため、メヌルに぀いお少し蚀いたいず思いたす。 メヌル甚の公匏プラグむンがありたす 。 ここでは、䜜成者自身がメヌルサポヌトを远加しないこずに決めたず蚀っおいたす。 䌝えられるずころでは、それは誰もが自分でできるほど簡単でシンプルです。 Googleグルヌプの倚くの質問ずinりがこの芳点に反論しおいたす。人々はPlay 2.1にPlay 1.2.xよりも機胜が劣らないこずを期埅しおいたす。



構成


以前の契玄が巻物に曞かれおいた堎合、珟圚は別の葉に曞かれおいたす。

泚目に倀する䞻なこずは、圌らがframework ID



を削陀したこずです。 ここで、1぀の倧きな構成ファむルの代わりに、いく぀かの個別の構成ファむルが必芁です。 議論の䜙地がある点ずしお、各アプロヌチには長所ず短所がありたす。 以前にproduction



を開始した堎合

play run --%production





これは次のようになりたす。

play -Dconfig.resource=prod.conf start





たた、 prod.conf



は、プレフィックスなしのすべおの蚭定オヌバヌラむドが含たれおいたす。



IDE統合


私の最高の銬が地元の道路に足を抌し蟌みたした

すべおのIDEのすべおのOdessaに぀いおはお話ししたせんが、私の愛するIntellij IdeaはPlay 2.xをサポヌトしおおり、理想ずはかけ離れおいたす。 コヌドナビゲヌションは、倚くの堎合、芋たり芋たりする必芁のない生成されたクラスに぀ながりたす。時にはscalaテンプレヌトの線集に問題があり、SBTの完党なサポヌトはバヌゞョン13でのみ利甚できたす。 ここに私が芋぀けお報告したものがありたす youtrack.jetbrains.com/issues/SCL?q=reported+by%3A+Andrey.Volkov+

コヌドを曞く喜びだけでは十分ではありたせん。 Play 2.xはそれほど前にリリヌスされおおらず、IDEのサポヌトに倧きなリ゜ヌスを費やすほど人気が​​ないかもしれないこずを理解しおいたす。 IDEからのヘルプをあたり期埅しないでください。

Play 1.2.xでは、これははるかに優れおいたす。



シンプルさがなくなった


Playterre Iの囜が奇跡に満ちおいお、魔法の杖の波で倚くのこずが行われた堎合、Playterra IIには魔法はなく、シャベルず、盟ず剣しかありたせん。

Play 1.2.xは非垞にシンプルで䟿利でした。 䜕ずかそれ自䜓で倚くのこずが行われ、うたくいきたした。 はい、Play 1.2.xであたりにも倚くが発生し、生成されすぎお通垞のJavaの䞖界ずはたったく異なるずいう意芋を聞きたしたが、それは簡単、簡単、迅速に機胜したした。 すべおの耇雑さは普通のナヌザヌから隠されおいお、最も现心の泚意を払ったプログラマヌだけが耇雑な゜ヌスコヌドを掘り䞋げる必芁がありたした。

Play 2.1では、ほずんどすべおの「魔法」はScalaに委ねられおいたす。 そしおこれはもはや魔法ではなく、これはScalaの明確に定矩された䜜品です。 プログラマヌは垞に぀たずく必芁がありたす。 たた、Scalaの基瀎さえ知らないず、理解するのは非垞に困難です。

楜しみのために比范しおください

 public static void index() { render() }
      
      





そしお

 public static Result login() { return ok( login.render() ); }
      
      





最初のコヌドはよりシンプルですが、いく぀かの芏則を知っお埓う必芁があり、2番目のコヌドはより冗長ですが、䜕かを知っお埓う必芁がありたす。 2番目の方法はより柔軟ですが、単玔ではありたせん。 私は個人的に最初のものが奜きです。

ずころで、 login



2番目の䟋でlogin



どう思いlogin



か これは、scalaテンプレヌトから生成されたクラスです。 これは、この非垞にscalaテンプレヌトのコンパむル埌にのみ衚瀺されたす。 ぀たり IDEは、そのようなクラスが存圚しない、たたは䜕かを倉曎するずメ゜ッドシグネチャが䞀臎しないず文句を蚀いたす。 コンパむル埌、苊情は消えたすが、IDEのヒントを䜿甚するず問題が生じたす。

Playterre Oneは、翌のある劖粟ず元気でいっぱいでした。 Playterra IIには、各ギアを芋るこずができるメカニカルゎヌレムしかありたせん。



玛れもない利点



倚くの奇劙なこずにも関わらず、欠陥ずは蚀わないたでも、Play 2.1には倚くの吊定できない利点がありたす。



フォヌムず怜蚌の操䜜


ずおも快適です。 JSR-303Bean Validationの完党サポヌトに加えお、特定のチェック甚に独自のvalidate



メ゜ッドを远加する機胜。 公匏ドキュメントの䟋を曞き換えたせん。 ここで完党に芋るこずができたす 。

テンプレヌトの堎合、 input



フィヌルドの組み蟌み生成があり、Twitter Bootstrapのマヌクアップをすぐに生成できたす。 唯䞀の残念は、バヌゞョン1.4の堎合です。 カスタムゞェネレヌタヌを蚘述する必芁がありたす独自のフィヌルドコンストラクタヌの蚘述セクション。

Authenticity Tokenが削陀されおおらず、Twitter Bootstrap 2.3フィヌルドが生成されおいた堎合、ほが理想的です。



Akkaおよびその他の非同期のもの


地元の居酒屋や居酒屋は非垞に高速なサヌビスを提䟛しおいたす。 そしお、キュヌはありたせん。

非同期性ずマルチスレッドのサポヌトに関しおは、銬に乗っお2.1をプレむしたす。 非同期HTTP芁求のネむティブサポヌト ずAkkaずの統合がありたす。 関数を操䜜するずきに、Javaの冗長性のみが公匏ドキュメントにも蚘茉されおいない堎合...

ただ比范しおください。 Java

 public static Result index() { Promise<Integer> promiseOfInt = play.libs.Akka.future( new Callable<Integer>() { public Integer call() { return intensiveComputation(); } } ); return async( promiseOfInt.map( new Function<Integer,Result>() { public Result apply(Integer i) { return ok("Got result: " + i); } } ) ); }
      
      





Scala

 def index = Action { val futureInt = scala.concurrent.Future { intensiveComputation() } Async { futureInt.map(i => Ok("Got result: " + i)) } }
      
      





Scalaに切り替えるもう1぀の理由。 たたは䜕か他のものですが、Javaよりも「機胜的」です。

ただし、競合他瀟は眠っおいたせん。Grails2.3では、非同期コンピュヌティングのサポヌトが非垞に優れおいたす 公匏ブログに投皿 。 さらに、非同期コンピュヌティングはJavaよりもGroovyの方が䟿利です。クロヌゞャヌのサポヌトが圹割を果たしたす。



スケヌラビリティずクラりド


ここの土地は肥沃で、ほずんどすべおの人口を逊うこずができたす。 そしお、さたざたな圢や倧きさの雲が空に浮かんでいたす。

非同期でステヌトレスな性質のため、Play 2.1は非垞にうたくスケヌリングするず蚀われおいたす。 これたでのずころ、私のプロゞェクトはそのようなニヌズに成長しおいないため、自分の経隓からこれを確認するこずはできたせん。

はい。Play2.xは倚くのクラりドホスティングサむトでサポヌトされおいたす。 さらに、ネむティブサポヌト、぀たり WARファむルを䜜成しおTomcat / Jettyの䞋にデプロむする必芁はありたせん。

それでもwarファむルを収集する必芁がある堎合は、 サヌドパヌティのプラグむンを䜿甚しおのみこれを行うこずができたす。



CoffeeScriptず少ないサポヌト


小さな悪魔がここで飌いならされ、今では人々に忠実に仕えおいたす。

CoffeeScriptおよびLessのネむティブサポヌト。 ここで䜕を远加たたは説明できるかさえわかりたせん。 䟿利に。 そうです。 すべおを瞮小したずしおも、どこも単玔ではありたせん.min.js



ではなく.min.js



をロヌドするだけです。

これにはただ問題はありたせん。



コン゜ヌル


Playterra IIの入り口の皎関は、新しい劎働者を雇いたした。 誰も気にしないが、ずにかく圌らの䜜品を芋るこずはない。 圌らがうたく働くようにするず、誰も圌らに泚意を払うこずはありたせん。

コン゜ヌルは、Play 1.2.xよりもはるかに䟿利で機胜的になりたした。 しかし、これはPlay 2.1自䜓よりもSBTScala Build Toolの功瞟です。

䟿利になったものから、 ~



で始たるコマンドに぀いお蚀及したいず思いたす。これらのコマンドは、゜ヌスコヌドが倉曎されるたびに実行されたす。 䞊蚘の~test



の䟋。



結果は䜕ですか



Playterra IIで䌑暇をずるこずは興味深いです。 そこでの移行に関する問題はただ未解決のたたです。

私自身のために、私は次の結論を出したした。








[1]-正盎なずころ、SpringをPlay 2.1に統合するこずは可胜ですが、 それほど難しくはありたせん 。 ぀たり Spring Data JPAおよびSpring Dataの他のプロゞェクトは理論的には远加できたすが、このテヌマに関する具䜓的な䟋や蚘事は芋぀かりたせんでした。 圌の手も届きたせんでした。

[2]-蚘事の準備䞭に、圌はJSON凊理甚のJava APIをJava EE 7に実装する必芁があるこずを発芋したした。 Oracleブログのこの投皿から刀断するず、この䟋よりも䟿利で優れおいたす。 GroovyのJSONサポヌトに十分近い。 将来的にはこれだけ。



All Articles