Hibernate + JBoss の理解不足が原因で発生した同じ問題をデバッグするのにうんざりしていたので、前回のプロジェクトでは基本的に Scala コードで全員を頭から殴りました。(本当にすごいです。元のシステムを書いた開発者はまだそこにいて、Hibernate の詳細に夢中になっています。)
私たちが持っていたもの -> いくつかのSQLと一緒に投げられたいくつかの休止状態コードと一緒に配線された一連のステートレスEJB Beanで主に構築された風変わりなシステム。(私たちは基本的に ASP です。実稼働クラスターはかなり小さく、約 100 台のマシンしかありません。)
私がしたこと -> さまざまな REST ベースのサービスをまとめ、いくつかのサーバー間の RPC を再定義しました。これにより、すべてのコーディングが非常に簡単になり、さらに、依存関係に注意が払われていないシステムにパブリック API を実装できます。
これまでのところ、実際の問題なく JBoss インスタンスの内外にコードをデプロイし始めました。Java で初めて Scala を使おうとすると、object
おそらく鼻にしわが寄るでしょう。しかし、そうでなければ、誰も本当に気づきませんでした。
現在、本格的に活動を始めて約5ヶ月。私たちはいくつかの主要な改訂を行い、その後遅れをとっていますが、システムは以前よりもはるかによくテストされています. そのため、実際にシステムを学習しているときにいくつかの悪いアイデアが入り込んできましたが、今ではそれらをすべて削除して、本番環境への展開に非常に近づくことができました。全体として、Java プログラマーのようにコーディングをやめて、ほとんどの標準ライブラリーに「慣れる」には、一般的な人が 2 ~ 3 か月かかると思います。
ORM システムの代わりに JDBC コードを書くことで、基本的に、パフォーマンスの問題のほとんどすべてが解消されました。速度は実際には大幅に向上しましたが、それは主に、より少ない実際のアプリケーション コードでやりたいことをすべて実行できたためです。
私が使用しているツール:
- Restlet : このフレームワークにとても満足しています。私たちの restlet 層はとてつもなく些細なコードです。
- JDBC -> 注: 基本的に wiki にあったものを微調整しました
- XML (そして間もなく JSON)
- buildr、変換したくないいくつかのプロジェクト(およびNexusとHudson)のmaven。私は sbt を試していますが、これはすでにscala プロジェクトにとって非常に優れています。
古い Java ライブラリを再利用することに関してまったく問題はありませんでしたが、スケーラ化されたレイヤでそれらをラップする傾向があります。ほとんどの場合、コードの記述を減らすためです。
そして、pimp my libraryパターンは、慣れ親しむべき最も重要なものです。「ケーキ」パターンは素晴らしいですが、インスタンス化を制御する必要があり、あまり役に立ちません。また、混合環境で Guice を使用したこともありますが、それほど難しくはありません。しかし、コードを混在させることは、最初に考えていたよりもはるかに役に立たないことがわかりました。
私の編集環境は主に OS X 上の TextMate ですが、Linux サーバーにデプロイしています。
PSはい、これが約4か月前のものであることは知っていますが、何でも構いません。これは、特に経験を積んだ今では重要です。