私は最近、UI開発について友人と話していました。 彼はまた、プログラミングが難解な芸術と考えられていたので、プログラマーでもありました(それをした私たちのものは、Balrogに直面している灰色のガンダルフのように考えられていました)。 または多分、私達はちょうど私達自身をそのように見た。 それにもかかわらず、私たちの両方は、その時間の多くのためのJavaプログラマでした。
私たちは両方とも、Javaで私たちのプロジェクトのほとんどをコーディングすることから、フロントエンドのためにJavaScriptに切り替える必要があるコンテクストスイッチであるという事実を嘆いていました。
私がオンラインで見た会話に基づいて、いくつかの読者はJavaScriptでコード化する必要があることについて不平を言うために私をchideするために彼らのキーボー あなたのキーを涼しく保ちなさい、私達および私達の同僚の両方は経験され、私達の顧客のためのJavaScriptそしてフレームワークの何れかを書くこと幸せである。 しかし、JavaScriptを使用することは常に最良のアプローチではありません。
この記事では、ユーザーインターフェースをJavaでコーディングできる2つのフレームワーク、GWTとVaadinを紹介します。
UIにJavaを使用する場合はどうすればよいですか?
私がクライアントと話していたとき、会話が私のところに戻ってきました。 彼らは、2つの別々の言語でプロジェクトを維持したくないと決めました。 同社はJavaで標準化しており、同じツールと考え方を使用して、webアプリケーション用の強力で最新のユーザーインターフェイスを作成したいと考えていました。
私は大きなチームで、チームが自分自身を分離しているように見え、フロントエンドに集中することを好む人もいれば、バックエンドやサーバー側のコードで主に作業している人もいることに気付きました。 仕事が開発のために承認されると、同じプログラマがJavaScriptフロントエンドの仕事の大部分を取ったり与えられたりして、他の人がバックエンドを取っているのを見ることがよくあります。
私はこれが悪いことではないと言っています。 誰もが快適ゾーンでより生産的であるようですが、誰もが他の誰もが何をしているのかを認識しており、必要に応じてそのゾーンに足を踏み入れること 小さなお店の場合、これはオプションではありません。 多くの場合、同じプログラマは、ユーザーインターフェイスからモデルへのプロジェクト全体のコードを記述します。
幸いなことに、その言語がJavaの場合、バックエンドと同じ言語でユーザーインターフェイスを維持したい場合の選択肢があります。 今、それらのいくつかについて話しましょう。
GWT
Google Web Toolkit、またはGWTは優れたオプションです。
私は約8年前に開始し、まだ維持しているプロジェクトでGWTで多くの成功を収めてきました。 GWTでは、単一ページアプリケーションのビューロジックを標準のJavaコードで完全に構築することができました。 これは、Eclipseのプラグインが付属しています。 私は自分の開発環境にNetbeansを使用していたので使用しませんでしたが、Eclipseはほとんどのチームの標準であるため、これは非常に便利です。
私は、サーバー側のプロジェクトのビジネスロジックと同じように、ウィジェット(カスタムテキストボックスなど)のロジックをクラスやヘルパーメソッドに分解することができました。 継承を通じて、私は同様の要件を持ついくつかのウィジェットを簡単に作成することができました。 私が対処しなければならなかった変更の唯一の本当の概念については、UIはほとんどのwebサービスや他のサーバー側のコードよりもはるかにイベント駆動
私がGWTに見ている主な欠点は2つあります。 一つはコンパイル時間です。 GWTは、時間がかかるプロセスにコンパイルステップを追加します。 Javaで構築されたGWTクラスは、JavaScriptライブラリにコンパイルする必要があります。 私はこれがかかる時間についていくつかの苦情を見てきました。
二つ目は、GWTが大幅な更新を見てからかなり久しぶりであるということです。 この記事の執筆時点では、2.8.2は1年以上前の2017年10月にリリースされました。 3年前に2.7.0がリリースされ、この記事を書いてから4年が経ちました。 私は3.0についての投稿やコメントが出てくるのを見ていますが、大きな変更を実装する前に3.0が出てくるのを待つべきかどうかを尋ねる二年前
私はフレームワークの大ファンであり、そのままでは十分に成熟していると考えていますが、将来のリリースの可能性におけるこの曖昧さは、一部のプロジェ 誰もそれらの行き止まりのフレームワークに縛られたいとは思わない。
GWTは、私が引き続き使用し、他のチームにニーズを満たしている場合に使用することを提案するライブラリです。
Vaadin
Vaadinはもう一つの素晴らしい選択肢です。
私はもともとGWTが標準のJavaコードでユーザーインターフェイスを書くための唯一の選択肢だと思っていました。 しかし、私が上記の小さな店と話したとき、彼らは彼らのプロジェクトのためにVaadinを使用することを決めたと私に言った。 だから、もちろん、私は見に行かなければならなかった。 そして、私は感銘を受けています。
正直言って、この記事を書いている時点で、私はまだプロジェクトを作成するためにVaadinを使用していません。 しかし、私はフロントエンドが必要で、これを使用する予定のいくつかの個人的なプロジェクトを増やしています。 Vaadinが約束を果たすならば、それはこれらのプロジェクトのための完璧な枠組みになるでしょう。
Vaadinは、KOTLINやScalaなどのJVMで実行される言語をサポートすることを約束しています。 私はそれがGroovyを含むことを願っています。 私の以前の記事の多くを読むと、簡単に保守できるコードをすばやく作成できるため、私がその言語のファンであることがわかります。 これらは私にとって重要な要件、特に保守性です。 すでに書かれているコードを簡単に維持することができない以上に、プロジェクトを破壊するものはありません。
最終的な考え
ユーザーインターフェイス技術に関しては、webアプリケーションを設計する際に多くの選択肢があります。 プロジェクトを設計する場合でも、運用環境を設計する場合でも、非常に多くの要件を念頭に置いておく必要があります。
心に留めておく必要がある2つの要件は、開発の容易さと保守性です。
- 作業が困難な開発環境では、多くのコストオーバーになり、新しいプログラマを非常に困難にします。
- 維持するのが難しいプロジェクトは、将来的には不満を引き起こし、より多くのお金を無駄にするでしょう。
あなたのチームのニーズと要件に基づいて、ユーザーインターフェイスからモデルまでの完全なJavaソリューションは、可能なだけでなく、迅速な開発とメンテ
良いコードを信じてください。