1. ホーム
  2. java

[解決済み] なぜ、Java/SpringではなくScala/Liftを使うのか?[クローズド]

2022-05-01 01:24:13

質問

この質問は少しオープンですが、Java/Springに代わるものとしてScala/Liftを見ていて、Scala/Liftの本当の利点は何なのかと思っています。私の観点と経験からすると、JavaのアノテーションとSpringは、アプリケーションのためにしなければならないコーディングの量を本当に最小化します。Scala/Liftは、それを改善するものなのでしょうか?

どのように解決するのですか?

私たちはScalaとJavaを同じように使いこなしていると仮定し、SpringやLiftに関係する以外の(大きな)言語の違いは無視することにしましょう。

SpringとLiftは、成熟度や目標がほぼ正反対です。

  • SpringはLiftより5年ほど古い
  • Liftはモノリシックでウェブのみをターゲットにしている。Springはモジュール式でウェブと通常のアプリの両方をターゲットにしている。
  • Springは多くのJava EE機能をサポートしていますが、Liftはそのようなものを無視しています。

一言で言えば、Springはヘビー級、Liftはライト級ということです。 十分な決意とリソースがあれば、それを覆すことも可能ですが、そのためには ロット の両方が必要です。

両フレームワークを使ってみて、印象に残った具体的な違いを挙げてみます。 これは網羅的なリストではないので、どうせまとめられませんが。 ただ、最も興味深いと思ったのは...。

  1. 哲学を見る

    Liftは、スニペット/アクションメソッドにいくつかのビューマテリアルを配置することを推奨しています。 特にスニペットコードは、プログラム的に生成されたフォーム要素を散りばめることになります。 <div> s, <p> sなど。

    特にScalaには言語レベルのXMLモードが組み込まれているので、これは強力で便利です。 Scalaのメソッド内でXMLをインラインで書くことができ,中括弧で囲まれた変数バインディングも書くことができます. これは,非常に単純なXMLサービスやサービスのモックアップを作るのに便利です.HTTPレスポンスアクションのスイートを,テンプレートや付随する多くの設定なしに,一つの素晴らしく簡潔なファイルで書き出すことができます. 一方、デメリットは複雑なことです。 どこまでやるかによりますが、ビューとロジックの分離があいまいであったり、分離されていなかったりします。

    一方、WebアプリにSpringを常用すると、ビューとそれ以外のものをしっかり分離させることができます。 Springはいくつかのテンプレートエンジンをサポートしていると思いますが、本格的に使うのはJSPだけです。 JSPでLiftにインスパイアされたファジーなMVCデザインをするのは、狂気の沙汰としか言いようがありません。 これは大きなプロジェクトでは、ただ読んで理解する時間が圧倒的に長くなってしまうので、良いことだと思います。

  2. オブジェクトリレーショナルマッパーの選択

    LiftのビルトインORMは"Mapper"です。 しかし、それはまだプレアルファだと思われます。 LiftWeb Bookには、MapperとJPAの両方を使うためのセクションがあります。

    Liftの CRUDify の機能はクールですが、Mapperでしか動作しません(JPAでは動作しません)。

    もちろん、Springは 標準的なデータベース技術や成熟したデータベース技術を網羅する . ここで重要なのは、quot;supports"という言葉です。 理論的には、Scalaから任意のJavaコードを呼び出すことができるので、Liftで任意のJava ORMを使うことができます。 しかし、Liftが本当にサポートしているのはMapperと、(もっと少ない程度ですが)JPAだけです。 また、Scalaで非自明なJavaコードを扱うことは、現状では思ったほどシームレスではない。Java ORMを使うと、おそらくどこでもJavaとScalaの両方のコレクションを使うか、Javaコンポーネントですべてのコレクションを変換して出し入れすることになるであろう。

  3. 構成

    Lift アプリは、アプリケーション全体の "Boot" クラスのメソッドを通じて、ほぼ完全に設定されます。 言い換えれば、設定はScalaのコードによって行われます。 これは、短い設定のプロジェクトや、設定を行う人がScalaの編集に慣れている場合に最適です。

    Springは設定に関してかなり柔軟性があります。 多くのコンフオプションをXMLの設定やアノテーションで駆動することができます。

  4. ドキュメンテーション

    Liftのドキュメントは若い。 Springのドキュメントはかなり成熟しています。 勝負にならない。

    Springのドキュメントはすでにきれいに整理されていて見つけやすいので、私が見つけたLiftのドキュメントをレビューしてみます。 Liftのドキュメントには、基本的に4つのソースがあります。 LiftWebブック API ドキュメント LiftWebの Googleグループ , と " 入門編 となります。 コード例も充実していますが、それ自体はドキュメントとは呼べません。

    APIドキュメントが不完全です。 LiftWeb Bookはツリーで出版されていますが、オンラインでも自由に利用できます。 その明らかに教訓的なスタイルは、私を時々いらいらさせましたが、本当に便利です。 チュートリアルが少し長く、契約が短いのです。 Springにはきちんとしたマニュアルがありますが、Liftにはそれがありません。

    しかし、Liftには素晴らしいサンプル群があります。 もしあなたがLiftのコードやサンプルコードを読むのに抵抗がなければ(そしてScalaをよく知っていれば)、かなり短時間で物事を解決することができるでしょう。

どちらのフレームワークも説得力がありますね。 どちらを選んでもうまくいくようなアプリが幅広く存在します。