[解決済み] なぜ、Java/SpringではなくScala/Liftを使うのか?[クローズド]
質問
この質問は少しオープンですが、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はライト級ということです。 十分な決意とリソースがあれば、それを覆すことも可能ですが、そのためには ロット の両方が必要です。
両フレームワークを使ってみて、印象に残った具体的な違いを挙げてみます。 これは網羅的なリストではないので、どうせまとめられませんが。 ただ、最も興味深いと思ったのは...。
-
哲学を見る
Liftは、スニペット/アクションメソッドにいくつかのビューマテリアルを配置することを推奨しています。 特にスニペットコードは、プログラム的に生成されたフォーム要素を散りばめることになります。
<div>
s,<p>
sなど。特にScalaには言語レベルのXMLモードが組み込まれているので、これは強力で便利です。 Scalaのメソッド内でXMLをインラインで書くことができ,中括弧で囲まれた変数バインディングも書くことができます. これは,非常に単純なXMLサービスやサービスのモックアップを作るのに便利です.HTTPレスポンスアクションのスイートを,テンプレートや付随する多くの設定なしに,一つの素晴らしく簡潔なファイルで書き出すことができます. 一方、デメリットは複雑なことです。 どこまでやるかによりますが、ビューとロジックの分離があいまいであったり、分離されていなかったりします。
一方、WebアプリにSpringを常用すると、ビューとそれ以外のものをしっかり分離させることができます。 Springはいくつかのテンプレートエンジンをサポートしていると思いますが、本格的に使うのはJSPだけです。 JSPでLiftにインスパイアされたファジーなMVCデザインをするのは、狂気の沙汰としか言いようがありません。 これは大きなプロジェクトでは、ただ読んで理解する時間が圧倒的に長くなってしまうので、良いことだと思います。
-
オブジェクトリレーショナルマッパーの選択
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コンポーネントですべてのコレクションを変換して出し入れすることになるであろう。
-
構成
Lift アプリは、アプリケーション全体の "Boot" クラスのメソッドを通じて、ほぼ完全に設定されます。 言い換えれば、設定はScalaのコードによって行われます。 これは、短い設定のプロジェクトや、設定を行う人がScalaの編集に慣れている場合に最適です。
Springは設定に関してかなり柔軟性があります。 多くのコンフオプションをXMLの設定やアノテーションで駆動することができます。
-
ドキュメンテーション
Liftのドキュメントは若い。 Springのドキュメントはかなり成熟しています。 勝負にならない。
Springのドキュメントはすでにきれいに整理されていて見つけやすいので、私が見つけたLiftのドキュメントをレビューしてみます。 Liftのドキュメントには、基本的に4つのソースがあります。 LiftWebブック は API ドキュメント LiftWebの Googleグループ , と " 入門編 となります。 コード例も充実していますが、それ自体はドキュメントとは呼べません。
APIドキュメントが不完全です。 LiftWeb Bookはツリーで出版されていますが、オンラインでも自由に利用できます。 その明らかに教訓的なスタイルは、私を時々いらいらさせましたが、本当に便利です。 チュートリアルが少し長く、契約が短いのです。 Springにはきちんとしたマニュアルがありますが、Liftにはそれがありません。
しかし、Liftには素晴らしいサンプル群があります。 もしあなたがLiftのコードやサンプルコードを読むのに抵抗がなければ(そしてScalaをよく知っていれば)、かなり短時間で物事を解決することができるでしょう。
どちらのフレームワークも説得力がありますね。 どちらを選んでもうまくいくようなアプリが幅広く存在します。
関連
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
IDEA パッケージステートメントの欠落
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
javaの模造品QQ WeChatのチャットルーム
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
JQuery DataTable 详解
-
自動配線された依存性のインジェクションに失敗しました。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
テストが見つかりませんでした
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。