タグ

javaとprogrammingに関するLyoのブックマーク (19)

  • JSON on HTTPやWeb APIを各言語でどうやって実装するのか

    HTTPでアクセスして、JSONを返すようなWebサーバを書きたいとする。 どんな言語を選ぶか。どんなミドルウェアを選ぶか。どんなライブラリを選ぶか。 たとえば、TIOBE Softwareが公表している「Programming Community Index(PCI)」という指標がある。人気のあるプログラミング言語の数値化。これを見ていて思ったのは、「多すぎだよね、プログラミング言語」ということ。これらのうち、どの言語を勉強し、どの言語をプロジェクトに採用すべきなのか。 その感触を得るために、 「同じ仕様のREST serviceを複数言語で実装したらいいんじゃね?」 と思った。いくつかの言語で実装を起こしてみている。 前提条件 大規模な開発を想定する。ユーザの規模が大規模。トランザクション数が大規模。そして、開発者が大規模。 実用的かつモダンな開発を想定する。プロジェクト毎のバージョン

    JSON on HTTPやWeb APIを各言語でどうやって実装するのか
  • Java7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行く

    Java7でList/TreeMap/TreeSetのIteratorがかなり早くなって、 ArrayListのforeach文(拡張for文)も、普通のfor文より早くなりました。 コレクションの細かい話、だが面白い! - 谷 心 in せろ部屋 そうなんですか!? …と思って試してみたところ、ArrayList の foreach文(拡張for文)が Java6 → Java7 で約2.5倍速くなっていました。 手元の環境では、普通の for 文より速くなることはなかったものの、ほとんど気になならないぐらいの差でした。 - 2011年11月26日 訂正: 速くなっていたのは ClientVM で実行した場合のみで、ServerVM では変わっていませんでした。 詳しくは、Javaの実行速度を調べるなら、ClientVM/SeverVM の違いを考慮しておくべきでした。 - 地平線に行

    Java7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行く
  • Javaだって関数型言語に負けないぐらい魅力的:オブジェクト指向だけで計算してみる - ようじょと結婚したい

    HaskellやScalaなどで一躍大人気となった関数型言語には、その根底に型付きラムダ計算という計算体系の理論が存在しています。この型付きラムダ計算の理論のおかげで、関数型言語では型安全なプログラミングが出来るのです。 ではオブジェクト指向言語にはそのような理論は存在するのでしょうか。 Javaについては、割と最近ですが、Javaをモデル化した計算体系を扱った、 Featherweight Java: a minimal core calculus for Java and GJ [Igarashi et al., 2001] という論文が存在します。この論文では、JavaJava 5.0以降で採用されたジェネリクスという仕組みをモデル化したオブジェクト指向の体系を定義し、この体系上での型安全性の証明を行っています。 この論文の体系では構造化定理で言う条件分岐と反復が定義されていません

    Javaだって関数型言語に負けないぐらい魅力的:オブジェクト指向だけで計算してみる - ようじょと結婚したい
  • languageinterfaces.com - languageinterfaces リソースおよび情報

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

  • Javaのhello worldの読み方 | mwSoft

    前書き お馴染み、hello worldのソース。 class Hello { public static void main(String[] args) { System.out.println("hello world"); } } このコードはコンパイルされると、こんなバイトコードになります。 ca fe ba be 00 00 00 32 00 22 07 00 02 01 00 05 48 65 6c 6c 6f 07 00 04 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 0a 00 03 00 09 0c 00 05 00 06 01 00 0f 4c 69 6e 65 4e

  • 【祝】:Java SE 7 正式リリース

    【祝】:Java SE 7 正式リリース 2011年7月29日 at 2:00 午前 3件のコメント 日(2011年07月28日(日時間29日 日でもぎりぎり28日だったようです。))Java SE 7 が正式にリリースされました。5年ぶりのリリースとなる Java SE 7 ですが、Java SE 7 は進化として位置づけられているバージョンになります。ここで言う進化とは言語仕様に対する大幅な変更はなく、開発生産性の向上やライブラリのアップデート等が多く、今まで Java SE 5, 6 等で開発をしてきて頂いた Java 開発者は比較的かんてたんに移行が可能になっています。Project Coin, NIO.2 等により可読性、開発生産性が向上した最新の Java SE を入手頂き是非開発現場でご使用ください。 サポート環境はこちら Java SE 7に関するドキュメント チュー

    【祝】:Java SE 7 正式リリース
  • Java SE 7のjava.nio.file.Filesがとても便利な件 - きしだのHatena

    とても便利。 たとえば、あるサイトからHTMLをダウンロードしてファイルに保存する場合。 try(InputStream is = new URL("http://www.google.com/").openStream()){ Files.copy(is, Paths.get("C:\\Users\\kishida\\Downloads\\google.html")); } ファイルの内容を一行ずつ読み込んで処理をする場合。 for(String s : Files.readAllLines(Paths.get("C:\\Install.log"), Charset.defaultCharset())){ System.out.println(s); } まあ、直接文字列でファイルパスを渡せなかったり、デフォルトCharset使う場合でも引数が省略できなくて、まだるっこいコードになってし

    Java SE 7のjava.nio.file.Filesがとても便利な件 - きしだのHatena
  • 一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。

    10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。 Java Core API JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? どれから読めば良いか分からんかったら、 java.lang java.util java.io java.text 辺りをまずはキチンと理解すること。当然コードを読み終わったら、それを使ってコードを書く事。 OpenJDK http://hg.openjdk.java.net/jdk7/jdk7 OpenJDKを読むことで、プログラム言語してのJavaではな

    一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。
  • Servlet 3.0 の超シンプルなサンプル (pom も) - 宇宙行きたい

    ちょっとした Java のライブラリ使うサーバ書かなきゃいけなかったのですが、 折角なので、Servlet 3.0 で書いてみたら鼻血が出るほど簡単で、今まで web.xml とか書いてたのはなんだったんだ状態になったので、 超シンプルなサンプル書いてみました。 package org.yoshiori; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.H

    Servlet 3.0 の超シンプルなサンプル (pom も) - 宇宙行きたい
  • Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指して

    Java5における総称型(generics)の導入に伴い、Javaの型システムは以前と比べて高機能になった反面、理解するためのハードルが高くなっています。もちろん、Javaの型についてきちんと理解するためには言語仕様を勉強すればよいのですが、手っ取り早く理解するための方法としてリフレクションAPIを使ってみるというのが有効です。リフレクションAPIの先祖はJava1.xのころから存在しており、フィールド、メソッド、クラスなどの情報を実行時に取得するためのものですが、総称型に合わせてJava5から新しいAPIが追加されています。ここではリフレクションAPIを使い、Java5の新しい型システムについてまとめてみたいと思います。 JDK1.4までの型はすべてClassクラスのインスタンスに一対一対応する JDK1.4までに存在していた型はパターンに分けると以下の3通りに分類できます。 基型(i

    Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指して
  • 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して

    Java: The Good Partsののタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす

    業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して
  • ywcafe.net

    ywcafe.net This Page Is Under Construction - Coming Soon! Why am I seeing this 'Under Construction' page? Trademark Free Review our Privacy Policy Service Agreement Legal Notice

  • システム系の例外は実行時例外+AOPでハンドリングするのがベスト - 達人プログラマーを目指して

    インフラ層のチェック例外はやはりJavaのBad Partだと思う 先日のJava言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してで、 インフラ層のフレームワークなどでは実行時例外が適切 ということを書いたのですが、この点についてもう少し詳しく考えてみたいと思います。 Java: The Good PartsのではRMIの章があるのですが、RMIではRemoteというマーカーインターフェースを継承しつつ、すべてのメソッドがRemoteExceptionというチェック例外を送出する規則となっています。 Java Good Parts(9.1節より引用) pubic interface StatRecorder extends Remote { void recordGame(BoxScore stats) throws RemoteException;

    システム系の例外は実行時例外+AOPでハンドリングするのがベスト - 達人プログラマーを目指して
  • 意図に関係する大事なことがら - かとじゅんの技術日誌

    最近、DDDの"意図の明白なインタフェース"というパターンの章を読みなおしています。このパターンが一環して主張していることは"名前が重要"ということです。その名前の重要性について、いろいろな文献からの引用を用いて考えてみたいと思います。 名前重要 "名前が重要"といえば、「プログラマが知るべき97のこと」で、まつもと ゆきひろ氏が 「名前重要」というタイトルで名前の重要性について語っています。 適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分に理解できていないということではないでしょうか。 名前が設計と強く結び付いていることがわかる、深イイ言葉です。 名前の決定が難航すると「えぃ、面倒だから適当に名前を付けてしまえ」となりがちです。油断すると結構適当になるもん

    意図に関係する大事なことがら - かとじゅんの技術日誌
  • JavaでTwitterをOAuth認証して使えるTwitter4Jとは

    JavaTwitterをOAuth認証して使えるTwitter4Jとは:クラウドとフレームワークで超簡単ケータイ開発(2)(1/3 ページ) 数年前に比べケータイ向けサービス構築を支援するフレームワークやノウハウがたまってきて、そして無料または、格安でサービスを公開できる仕組み(クラウドやVPSなど)も普及している今こそ、ケータイ向けサービス開発を始めるチャンスではないでしょうか 携帯端末は、何気なく“つぶやく”のに最適! 前回の「Google App EngineとSlim3とMobyletで始める携帯Web入門」では、Javaのケータイ向けサービス開発を簡単にするクラウド環境とフレームワークなどを紹介し、開発環境を構築して動かしてみました。数年前に比べ、今ケータイ向けサービス構築が容易になっていることが確認できたかと思います。 携帯端末は、いつでもどこでも触れるため、つぶやくためのデ

    JavaでTwitterをOAuth認証して使えるTwitter4Jとは
  • Javaプログラマが知るべき9のこと - @katzchang.contexts

    はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今すぐ、ソースコードをコピペして100klに増えるプラグインがいつの間にかインストールされる呪いをかけてあげよう。幸い、ここを読んでいる人にはそんな人はいないだろうと思うけれども。 ということで、コードの品質を下げる要因、すなわちシステム全体の品質を下げる要因となり、かつ使われやすいアンチパターンを挙げ、対策を検討していくことにする。対象は以下: 出力パラメータ 処理状態返却 意味のある配列 無意味な初期化 多すぎるtry-catch 暗黙の順序 コンパイラ警告の無視 過剰なコメント e.printStackTrace() 出力パラメータ メソッドの引数にオ

    Javaプログラマが知るべき9のこと - @katzchang.contexts
  • Java 30byte FizzBuzz - プログラマーの脳みそ

    なっちゃん(以下な)「なんかさー。タイトルが無理すぎない?」 ぎぃくん(以下ぎ)「まあ流行りだからね」 せっちゃん(以下せ)「流行りって言ってもFizzBuzzを30バイトで - Togetterが1/24だし、1週間経ってるけど。どちらかと言えばオワコン?」 な「まあまあ」 ぎ「とりあえず、どのぐらい無理っぽいか見てみるかい?」 普通のFizzBuzz せ「じゃぁまあ普通のFizzBuzzをみてみましょ。」 な「FizzBuzz Javaでググって…これかな? Fizz Buzz - Semicolonless Java」 public class FizzBuzz { public static void main(String[] args) { for (int i : new int[] { 0 }) { while (++i <= 100) { if (i % 15 == 0)

    Java 30byte FizzBuzz - プログラマーの脳みそ
  • nullという値は本当に必要か考えよう - かとじゅんの技術日誌

    今回は、nullの扱いは気をつけようねというお話。特にこれからの人に読んでもらいたい。 nullは変数を初期化する時などに、当たり前のように登場します。Javaではnullがないなんて考えられないわけです。(C#でも同様) しかし、nullの考案者のTony Hoareは「10億ドル単位の過ち」と発言しています。 null参照の考案は10億ドル単位の過ち?(スラッシュドット・ジャパン) - エキサイトニュース nullには、それだけの魔性があって使い方を考える必要があります。nullは”値が存在しない”という状態を表現する時に使われることが多いのですが、そのnullに対する注意が十分に払えずにトラブってしまうことが多いのです。Scalaではその"値が存在しない"という状態をOption型のNoneで表現することでnullを回避する手段が提供されています。JavaではScalaのようにはでき

    nullという値は本当に必要か考えよう - かとじゅんの技術日誌
  • JerseyとSeasar2を連携させる - azuki note

    前のエントリの続きです。 私はS2JDBCが使いやすいのでDIコンテナとしてSeasar2を使うことが多いです。Seasa2でRESTfulなサービスを提供する場合には、S2Axis2というプロダクトがあるようですが、将来性を考えJAX-RSを使ってみたいので、JerseyとSeasar2の連携を試してみます。 Jerseyには、もともとDIコンテナとの連携用にIoCComponentProviderFactoryというインタフェースが存在し、SpringとGuiceについてはjersey-springとjersey-guiceというライブラリがあります。このコードを参考にSeasarと連携させています。簡易的にですが。今回のソースはこちらにあります。 前提としてDolteng(Seasar2用のEclipseプラグイン)を使用してS2JDBCを使用するWebプロジェクトを使用します。DB

    JerseyとSeasar2を連携させる - azuki note
  • 1