UIコンポーネントを備えたWebアプリ開発用の多言語フレームワークであるVaadinから,Vaadin Springプロジェクトのバージョン1.1がリリースされた。
VaadinのNavigator
クラスとView
インターフェースに関連して,2つの新機能がある。
- 新しい
SpringNavigator
クラス - 新しい
@SpringViewDisplay
アノテーション
SpringNavigator
クラスは,“ビューの設定を大幅に簡素化”する。また@SpringViewDisplay
アノテーションは,“ビューが実際に表示される場合に,その対象となるVaadinコンポーネントをマークするために使用する”。
Vaadin Springを使用したHTTPセッションのシリアライズなど,多数のバグフィックスも含まれている。
SpringNavigator
クラスと@SpringViewDisplay
アノテーションは,次のコード例のように使用する。
// MainUI.java
@SpringUI
@Theme("valo")
public class MainUI extends UI {
MainViewDisplay mainContent;
public MainUI(MainViewDisplay mainContent,SpringNavigator navigator) {
this.mainContent = mainContent;
navigator.setErrorView(ErrorView.class);
}
/// additonal supporting code...
}
// MainViewDisplay.java
@SpringViewDisplay
public class MainViewDisplay extends Panel implements ViewDisplay {
public MainViewDisplay() {
setStyleName(ValoTheme.PANEL_BORDERLESS);
}
@Override
public void showView(View view) {
// Assuming Views are components, which is often the case
setContent((Component)view);
}
}
GitHubにあるプロジェクトの中には,ビューのナビゲートと管理が容易になったことを示す,上記Javaファイルのソースコードのチェンジセットも含まれている。
Vaadinでプロダクトマネージャを務めるMatti Tahvonen氏に,今回のリリースについて話を聞いた。
InfoQ: Vaadinでのあなたの責務について教えてください。
Tahvonen: Vaadin Frameworkと,それに関連するOSライブラリ(Vaadin Springなど)を担当するプロダクトマーケティングマネージャという肩書きですが,デベロッパアドボケートに近い仕事をしています。ブログ記事の執筆や興味を持ったJavaテクノロジとの統合プロジェクトのサンプル開発,技術記事の執筆,ウェビナの開催,カンファレンス参加(講演やブースのスタッフとして),Vaadinの開発に関する新規ユーザや顧客支援,社内エンジニアのヘルプ,その他技術的なマーケティングを行なっています。私はOSSの信奉者ですので,Vaadinが所有している有償製品のサポートは同僚に任せて,おもにOSS提供製品に関する仕事をさせてもらっています。
InfoQ: 他のJava Webフレームワークに比較して,Vaadinがユニークな点は何でしょうか?
Tahvonen: Vaadinは,Web技術としては最も強力な抽象化を持っています。Vaadin Frameworkを使用したアプリケーションでは,1行のJS, HTML,あるいはCSSも書く必要はありません(ただし望むならば可能です)し,ブラウザの癖やさまざまなHTTP通信形式(ベーシックなHTTP,フォームのPOST,AJAX,サーバプッシュ,WebSocket)を理解する必要もないのです。低レベルのWebプログラミングが必要なのは,カスタムエクステンションを書く場合に限られますが,活発なコミュニティと数百に及ぶアドオンのおかげで,その必要はほとんどありません。大部分の作業がプレーンなJavaとコンポーネントベースのプログラミングで可能ですので,容易かつ効率的な開発が実現します。VaadinはおもにデスクトップUI(Swing,SWT,JavaFX)に関する経験のある開発者に歓迎されていますが,PHPを使ったバックエンド開発者の中にも熱心な支持者がいます :-)
InfoQ: 一般的なマイクロサービスモデルにおいて,VaadinそのとUIはどのように収まるのでしょうか?あなたの考えを聞かせてください。
Tahvonen: 最近では非常に多い質問ですね。Vaadinはマイクロサービスに非常に適していますし,一般的には,少なくともある程度のUIを常に備えています。UIにはいくつかの方法がありますが,どれが最適かは要件に依存します。サービスがUIを備えていたり,あるいはVaadin + (REST)サービスで構築したUIを他のアプリケーションに提供したりするのであれば, Vaadinは最適です。さらにはJava自体が,RESTサービス(Javaで書かれたもの以外でも)を利用するには最適なツールですから,複数のマイクロサービスのデータを利用するマッシュアップの開発においても,Vaadinは優れた機能を発揮してくれます。
ユーザから同じ質問を受けることがとても多かったので,このトピックに関するコンテントとサンプルを書くことにしました。同僚のAlejandroと一緒に書いた最初の記事がこちらです。他にもたくさんの記事やサンプルがポストされています。
InfoQ: VaadinとVaadin/Springの今後について教えて頂けますか?
Tahvonen: 直近の予定で最も重要なのは,間違いなくVaadin 8です。現行のVaadinのAPIには,ラムダやジェネリクス,あるいはJDK自体のコレクションフレームワークよりも前の時代に作成されたものが含まれています。Vaadin 8ではこれを大きく進めて,よりタイプセーフでアプリケーションが書きやすく,CPUないしメモリ使用の観点でより効率的なものにします。Vaadin Springも,これに合わせる形でバージョンアップされることになります。
当社は後方互換性を重視している(Vaadinアプリの多くが長期間にわたって運用されている)ので,アップグレードを簡単にする互換性パッケージを用意して,新しいAPIの段階的な利用開始を可能にします。Java 8へ移行できないユーザや,IE 8のサポートが必要なユーザのために,バージョン7も引き続きサポートします。
現在はベータ段階で,最初のベータ版はクリスマス休暇前にリリースされたばかりです。
https://vaadin.com/blog/-/blogs/vaadin-8-beta-is-out-we-need-your-help-
Vaadin Springに関しては,Spring Security用にいくつかのヘルパを追加する計画です。Vaadin SpringユーザのほとんどがSpring Securityを使用しているので,統合性を高めることで,Spring Securityをもっと簡単に使えるようにしたいと思っています。
InfoQ: AngularJSやReactJSといったJavaScriptフレームワークと比較して,パフォーマンスや応答性はどうですか?
Tahvonen: Vaadinを評価しようとする時,開発者が一番気にする部分がここですが,私としては,自分自身で試してみることを勧めています。セッションがサーバのメモリ内にある(通常はそうです)場合,通常のサーバアクセスは,サーバが世界の反対側にでもない限り,非常に高速です。最近のGoogle検索の動作を見てください。キーを押下する度にサーバにアクセスしていますが,それでも応答性は十分です。
Amazonのい専門家たちと地理的ロードバランシングを行なった例では,シドニーで実行しているEC2マイクロインスタンス上で(私はフランスにいます),VaadinベースのTetrisをプレーすることができました。(同じ大陸にあるサーバと比べた場合,)完璧にスムーズだとは言えないかも知れませんが,一般的なビジネスアプリならばまったく問題ありません。WebSocketベースの常時接続型の通信チャネルを有効にすれば(ひとつの外部ソフトウェアと
@Push
アノテーションをVaadinのUI[/0}クラスに追加することで可能),サーバのレイテンシをさらに低減することもできます。
サーバのラウンドトリップによるレイテンシよりも,AngularやReactの場合と同じように,ブラウザのレンダリングや実際のビジネスロジック,あるいはDBクエリに関わる遅延を気にするべきでしょう。長時間を要するクエリでは,UIがストールしているように見えるのを防ぐために,Vaadinとクライアント側のUIフレームワークを使って,何らかのプログレスインジケータかダイアログを表示する方がよいと思います。
Tahvonen氏はStéphane Nicoll氏と共に,先日のVaadinとSpringを使ったJava Webアプリケーション開発に関するウェビナを録画している。
この記事を評価
- 編集者評
- 編集長アクション