最近、いろんなものを見たり聞いたりしているうちに思ったことを書きます。 Javaはやばい。 やばいというのは、「クール」という意味ではなく、その意味どおりにやばい、という気がしています。あくまで僕個人の感想なので、軽い気持ちで読んでください。 プログラミング言語環境として まず言語としてですが、同じ静的言語としてC#と比べるなら、InfoQのこの記事で簡潔に語られているようにほぼあらゆる点で後塵を拝しています。プロパティ、オペレータオーバーロード、モジュラリティサポートなど、Java7で導入されそうなあらゆる機能は既にC#にあります。昔は、機能の追加にどん欲なC#、言語仕様をあまりいじらず、普及してしまった言語として現実路線を行くJava、といった印象でした(少なくともJava開発者だった僕には)が、最近はJavaも浮足立って次から次へと新しい言語仕様を取り入れようとしています。 しかし、
この日記は、前日の「Javaがやばい」という日記の中で触れていたRIAプラットフォーム比較記事を抜き出し、さらに考察を加えたものです。日記をがちゃがちゃいじってしまい、読んでる方にはほんと申し訳ないです。 今日は、RIA(リッチ・インターネット・アプリケーション)のビッグウェーブを間近に控えた現在の状況を自分なりにまとめてみたいと普段から考えていましたので、少し書いてみようかと思います。Ajaxについては、ベンダ中立な技術ですし、RIAという範疇からは少し外れる気がしますので、この記事では触れません。 RIAプラットフォーム比較を、試しに表にしてみましょう。 ベンダーUI記述言語手続き記述言語ブラウザ内実行環境スタンドアローン実行環境備考 SunJavaFXJavaアプレットJVMアプレットはもう使われない。ランタイムはそこそこ配れている。携帯電話に強み AdobeMXML/FlashAc
数日遅れで、MYCOMの記事(http://journal.mycom.co.jp/articles/2007/02/26/jsr296/)読んだ。 感想。 え、これだけ? と簡単に見限ってしまうのも何なので、もうちょい調べてみました。 で、機能としては以下のようなものがあります。マイコムさんの記事の補足、って感じで書きました。 Applicationクラスを継承することで、アプリケーションのライフサイクルを規定できる とはいえ、startup()、ready() (スタートアップ完了後)、shutdown()だけですが。 Application#launch()メソッドを呼び出すと上のライフサイクルをつつがなく実行してくれます。 つまり、以下のようなコードでSwingアプリのメインクラスを記述できます。 public class Main extends Application { @O
今日は、とある理由からOpen Terracottaというプロダクトについて調査してました。 で、すごいですねこれ。 要はクラスタリング、キャッシング用のライブラリなのですが、すごいのはシングルJVM用のコードを一切いじらずにクラスタ化できること。 クラスロード時にバイトコードを操作し、PUTFIELD/GETFIELD命令をトラップすることによって実現しています。Terracottaサーバを一台用意すると言う中央集権体制で、フィールド変更⇒Terracottaサーバに通知⇒クラスタ内の全てのJVMに通知、という流れでフィールド単位のデータ変更がクラスタに流れます。 で、そんな時気になるのがクラスタ内の2台が同時にフィールド変更を行ったときのポリシーはどうなってるの?ってところですが、Terracottaはその解決策もなかなかです。 普通にそれを行ってしまうとデータは壊れますが、もしJav
ついに出ましたね。Servlet2.5、JSP2.1が使えるのが一番楽しみかなあ。 移行ガイドがあったので、翻訳してみました。例によって適当です。文句を言わないように。 http://tomcat.apache.org/migration.html 5.5.xから6.0.xへのアップグレード Java5が必要です Tomcat6.0は、5.5.xでJRE1.4互換パッケージを利用できたのとは違って、Java5が必須です。 ディレクトリ構成が変わりました Apache Tomcat 5.5.xをデフォルト構成で使用していたならば、ディレクトリ構造はcommon、shared、serverとなっていたかと思います。 Apache Tomcat 6.0.xはこれらのディレクトリを単一のlibディレクトリに統合しました。 conf/catalina.propertiesファイルを編集してこれらのデ
わーい!ついにリリースされました、1.1。 早速いっぱいいじりたいと思います。 とりあえずどこがかわったのか知りたくて、下のページを訳してみました。 http://www.theserverside.com/news/thread.tss?thread_id=43487 超意訳なのであんまり信用しないでください。 Seam1.1は、RoRライクな「Seam-Gen」と呼ばれるアプリケーションジェネレータを提供します。 作成されたアプリケーションはNetBeans、Eclipseで直接開くことが可能。 Seam1.1を使用すれば、EJB3に依存しない"pure POJO"アプリケーションを書くことが出来る。 (とはいえ、EJB3コンポーネントはコンテナが提供するサービスの利用や、標準への準拠という点で 推奨される)。 結果として、SeamアプリケーションをJ2EE 1.4アプリケーションサー
API、XMLメタデータ、HQL、設定が変更になりました。 ただ、2と3を同時に動かすことはできます。 APIの変更 パッケージ名が変わりました。 net.sf.hibernate⇒org.hibernate net.sf.hibernate.expression⇒org.hibernate.criterion テキスト置換で対処してください。 あと、Hibernateを参照しているほかのライブラリにも気をつけてください。 これに関しては、手作業で直していくしか方法がありません。 例えばEHCache。EHCacheは自前でnet.sf.ehcache.hibernate.Providerという キャッシュプロバイダを提供しています。 これなんかは、Hibernateが自身でorg.hibernate.cache.EhCacheProviderというプロバイダ を持ってるのでそれを使うなど
さて、Cometの実装ということで大注目の技術、Cometdに関する解説も3回目を迎えました。 今日のメニューは Cometdを使用した情報共有型サイトの作成方法 これまでのまとめ、リファレンス Cometdの内部構造を簡単に解説 と言った感じで進めていきたいと思います。 Cometdを使用した情報共有型サイトの作成方法 前回は、Cometdを使用した情報配信型サイトの作成を行いました。 ポイントとしては チャネル(Channel)の作成 Channel.publish(Object data, Client from)メソッドによるチャネルへのデータ配信 JavaScript関数cometd.subscribe()によるチャネルの購読 でしたね。 この中でも重要だったのはChannel.publishによるチャネルへのデータ配信。 publishメソッドの第一引数にJavaのオブジェクト
Ajax+Javaアーキテクチャ構築記第三回です。 前回の予定では、今回はJMakiの続きをやるつもりでしたが、またもやいきなり予定変更。 すいません、ちゃんと続きもやりますよ?今は、アーキテクチャに採用できそうなテクノロジをどんどんつまみ食いしてる状態なので、毎日違うこと調べてるんです。しょうがないんです。 で、今回はCometdをやります。 Cometdって何? http://cometd.com/ で開発されているオープンソースプロジェクトです。 どんなプロダクトかというと、ズバリCometの実装! じゃあCometって何かと言うと、最近はやりのHTTPプロトコルの枠組み上でのPush配信技術。 何言ってるかわからないですね。 つまり、HTTPはクライアントがリクエストしたらサーバがレスポンスを返すという、つまりコンテンツを「とってくる」というやり方が基本なのですが、Cometはそう
まずはJSF設定 まずは、web.xmlに以下の設定を追加してJSFを利用可能にします。 Facesサーブレットのマッピング設定です。 <!-- Faces Servlet --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/guess/*</url-pattern> </servlet-mappi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く