タグ

JavaとProgrammingに関するagwのブックマーク (171)

  • 普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選 - 達人プログラマーを目指して

    以前はJava EEの普通のWebアプリケーションで、JavaScriptはあくまでも利便性のために補助的に使うものという認識がありましたが、さすがに最近では普通の業務系のSI案件でもテーブル表示や入力補助などで高度なAjaxライブラリーの使用が当たり前のように求められるようになりつつあります。サーバーサイドのJavaScript技術といったものもありますが、そういった新しい技術を使わないまでも、ごく普通にある程度大きなJavaScriptの作成が必要になってきているということです。 もちろん、JavaJavaScriptはその名前にかかわらず、来全く別の言語です。しかし、意図的に似た構文でロジックが書ける*1ため、兄弟の言語として認識している人も意外に多いのではないかと思います。しかし、使用できるライブラリーに違いがあるという点が一見してわかる最も大きな違いですが、基的な言語の文法

    普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選 - 達人プログラマーを目指して
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

    長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
  • Googleが開発したJavaデバッグを簡単にする新技術「cofoja」 | エンタープライズ | マイコミジャーナル

    Java Programming Language Googleの20%プロジェクトからJava向けの新しい技術「cofoja (Contracts for Java)」が公開された。既存の実装に大きく手を加えることなく、デバッグをより簡単にしてくれる効果が期待できる。バグは些細なコードが起こすものだったりするが、それを追跡して発見するのは時に困難を極める。これは問題が発生した箇所と、実際にバグがある箇所が大きく離れていることが理由になっていることもある。問題発生箇所とバグ発生箇所を近くにまとめることができれば、それだけバグ発見も取り組みやすくなる。 cofojaはこれを簡単に実現するための技術。インタフェースに制約表現を追加可能にするところがポイントとなっており、クラスの実装に手を加えなくてもインタフェースに制約表記を追加することで実行時にチェックできるようになる。ブログに掲載されている

  • IBM Developer

    IBM Developer
  • いまさらだけど、Java言語にはクロージャーがない - 達人プログラマーを目指して

    Java言語でメソッド中で内部クラスを作る時、そのメソッドのパラメーターやローカル変数に内部クラスのメソッド中からアクセスできます。しかし、この場合にはこれらの変数にfinalを付けないとコンパイルエラーになってしまいます。 public void test(int param) { // コンパイルエラー String value = "Hello"; // コンパイルエラー Test t = new Test() { public void print() { System.out.println("param = " + param); System.out.println("value = " + value); } }; } この問題については、ある程度経験を積んだJavaプログラマーなら常識なのかと思いますが、初心者は最初につまづくところかと思います。しかし、経験を積んだJav

    いまさらだけど、Java言語にはクロージャーがない - 達人プログラマーを目指して
  • “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT

    “Stop the World”を防ぐコンカレントGCとは?:現場から学ぶWebアプリ開発のトラブルハック(2)(1/2 ページ) 連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) Full GC問題の時代が再び到来! それまで順調に動いていたはずのWebアプリケーションが、ある時突然、応答を返さなくなる。そして、運用者があたふたしている間に、何事もなかったかのように再び動き出す。 Javaで構築したシステムにかかわる者ならば誰しもが体験するであろう事象、そうFull GC(ガベージ・コレクション)だ。Full GCが行われている間、すべてのアプリケーションスレッドは停止する。この事象は“Stop the

    “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT
  • アップル、「Mac OS X」のJavaを更新--今後の同梱中止を示唆

    Appleは、米国時間10月20日にMac OS Xに組み込まれているJavaを更新する「Java for Mac OS X 10.6 Update 3」において、MacにおけるJavaのサポートを近い将来終了する可能性を示唆した。同アップデートは以下のように、これが最後になるかもしれないと警告している。 Appleがポーティングし、Mac OS Xとともに出荷したバージョンのJavaであるJava for Mac OS X 10.6 Update 3について、優先度が低下している。 Appleが開発したランタイムは今後、これまでと同じレベルを維持されることはなく、Mac OS Xの将来のバージョンからは削除される可能性がある。Mac OS X 10.6 Snow LeopardおよびMac OS X 10.5 Leopardとともに出荷したJavaランタイムについては、これらの製品の標準

    アップル、「Mac OS X」のJavaを更新--今後の同梱中止を示唆
  • Clojureをつくったわけ

    The original document appears at http://clojure.org/rationale. The translation is based on November 27, 2009 version of the page. 読みにくくて申し訳ないです。数多くの間違いがあると思いますので、ご指摘ください。 顧客や出資家は、業界標準のプラットフォームであるJava仮想マシン (Java Virtual Machine; JVM) に相当な投資をしており、そのパフォーマンス、セキュリティ、安定性などに満足している。Java開発者は、動的言語の簡潔さ、柔軟さ、生産性をうらやましく思うものの、顧客の環境で動かせるかどうか、既存のコードやライブラリが使えるかどうか、そして動作速度などについて心配するかもしれない。また、ネイティブ・スレッドやロッキングによる並行処理に

  • Part4 仮想マシンの仕組みを理解する

    Part1「今さら聞けないOSの疑問」,Part2「これがWindows Vistaだ!」,Part3 「Windows XP Tips 25 」に続いてPart4は,Javaなどで用いられている『仮想マシン』を解説します。 Java技術が誕生したのは1995年。誕生してからすでに10年以上の歳月が流れました。登場当初はばく大なメモリーを消費するとか,とにかく遅いという理由で敬遠されがちでしたが,現在ではWebアプリケーションを中心に幅広く普及しています。遅いという欠点も徐々に克服していき,今では性能が重視されるバッチや組み込み系のアプリケーション,変わったところでは火星探査車両の制御にも利用されるようになりました。 ここまでJavaが普及した大きな要因の一つに,一度作成したプログラムが多様なOSの上で動作するという点が挙げられます。この特徴を表す標語として「Write once, run

    Part4 仮想マシンの仕組みを理解する
  • Arrays#sort - てきとうなメモ

    JavaにはArrays#sortというメソッドがあって配列をソートすることができる.ソートする対象がプリミティブ型だとquick sortで実装され,オブジェクトだとmerge sortで実装している.オブジェクトのソートはstableであるという仕様のためだと思われる. さらに,どちらの場合も配列のサイズが小さい場合はinsertion sortで実装されている.merge sortもquick sortも分割して再帰的に実行されるため,分割された配列の要素数が小さくなった時点で,insertion sortに切り替わっている.insertion sortはO(n^2)なんだけどもシンプルな実装なので短い配列の場合はそっちの方が効率がいいということだろう. その他いくつか面白いなと思った点. quick sortのpivot 配列を2等分(サイズが大きい場合は8等分)して,配列の両端と

    Arrays#sort - てきとうなメモ
  • グラフ理論ライブラリのJGraphTを使ってみた - kaisehのブログ

    JGraphT JGraphTは、Javaのグラフライブラリです。グラフの描画ではなく、グラフ理論のモデルとアルゴリズムの方にフォーカスしています。とても使いやすかったので、紹介してみます。 無向グラフ UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>( DefaultEdge.class); g.addVertex("a"); g.addVertex("b"); g.addVertex("c"); g.addEdge("a", "b"); g.addEdge("b", "c"); System.out.println(g.vertexSet()); System.out.println(g.edgeSet()); System.out.println(g.edgesOf("c"));

    グラフ理論ライブラリのJGraphTを使ってみた - kaisehのブログ
  • Java開発者の読むDjangoの設計思想 - やさしいデスマーチ

    Djangoのサイトには「Djangoの設計思想」というドキュメントがあります。どんなフレームワークでもそうですが、設計思想を理解し、その流れをつかむ事で正しい利用への最短ルートです。もし、自分の思想にあわないならば問題です。可能であれば、そのフレームワークの検討を取り止めるべきでしょう。それが出来ないならば利用している時にはそのフレームワークの思想で思考することが求められます。 Djangoの設計思想は、緩く結合し、必要最低限のコードで、だが隠蔽せずに明示するという事です。DjangoではMVT(モデル/ビュー/テンプレート)と呼ばれるMVCに近い構造をとります。それらの3つのレイヤーはお互いに疎な関係を持ち、モデルとテンプレートはデフォルトの実装以外を容易に採用できるようになっています。また、ほどよく規約を適用し必要なコード量は少なくなっていまが、なんでもかんでも裏側で処理せずに、なに

    Java開発者の読むDjangoの設計思想 - やさしいデスマーチ
  • 西尾泰和のブログ: Javaで破壊的クイックソート

    agw
    agw 2009/05/08
    破壊、非破壊的クイックソート間の考察。
  • 西尾泰和のブログ: QuickSort祭り(一人)

    後輩のQuickSortの課題を見ていて思ったのですけど、QuickSortは分割したリストのために新たに領域を確保していいかどうかによって難易度がだいぶ異なりますよね。高級言語は「QuickSortがこんなに簡単に書ける」なんてことを主張することがありますが、与えられた配列をその配列(+定数サイズ)の領域だけでソートするCとかで書かれたアルゴリズムを「真・クイックソート」だとすれば、新たな領域の確保を伴うQuickSortはちっとも早くないので「似非クイックソート」かもしれません。 で「似非クイックソート」なら簡単に書けるという話題で、ラボから赤坂某所への電車で書いたJavaのコード。 import java.util.Iterator; import java.util.Vector; public class Test { public static void main(String

  • 中途半端に知識だけある素人プログラマを相手にしている場合ではない件について - なんたらノート第三期ベータ

    中途半端に優秀なプログラマが「正しいプログラミングテクニック」だと妄信しがちな3つポイント - 分裂勘違い君劇場 が流行ってるみたいなので参戦。 なんだか、「中途半端に優秀なプログラマ」を相手にしているというより、「中途半端に知識だけある素人プログラマ」に対して投げられているように感じました。まあ、ノンプログラマーから見れば、「知識だけある素人」と「優秀」の違いを見極めるのは困難だという意味で、皮肉を込めて「優秀」と言ってるのかもしれないけど。 で、これをきっかけに大きく寄り道、って感じで。細かいこといろいろ考えました。 変数のスコープは狭いほど良い 広いスコープからアクセスできるようにした方が正しいケースの代表的な例は、標準入出力ストリーム(stdinやstdout)がバインドされたグローバル変数の形で実装されているシステム変数や、Rubyのprintやpメソッドだろう。(この点、Jav

    中途半端に知識だけある素人プログラマを相手にしている場合ではない件について - なんたらノート第三期ベータ
  • Java 7で導入されるクロージャ - hidemonのブログ

    次期Javaでは,クロージャが導入されることになっている.クロージャとは,変数と束縛された関数のこと.Lispなどの動的な言語では数十年まえから一般的な機能で,昨今のスクリプト言語では無い方が珍しいぐらいなので,今更という感はなくもないが,導入されるのは大歓迎だ. クロージャはさまざまな場面で使用できるが,最も多用されそうなのは,GUIなどのコールバックハンドラ.現在のJavaではクロージャが無いので,無名クラスを使って定義しているが,これをクロージャが置き換えるものと思われる.また,高階関数のようなものをつかうのにも便利に使えるだろう. mycomジャーナルの記事1,2,3,4,5に良くまとまっている. まだ,規格として安定したものになっているわけではないらしい. Neal Gafterのブログにクロージャの歴史が語られている.参考になる. サンプル 上述のMycomジャーナルの記事から

    Java 7で導入されるクロージャ - hidemonのブログ
  • 「クロージャの定義」 - hidemonのブログ

    Java7のクロージャの提案者の一人,Neal Gafterのブログが大変参考になるので,ちょっと野良翻訳してみよう. クロージャの定義 Java 言語にクロージャを追加しようという我々の提案に関して混乱があるようだ.そもそも,Javaにはすでに無名インナークラスという形で,クロージャがあるのではないか? すでにあるものをなぜまた追加しようというのか? 一部の人々には,我々の提案には,クロージャとは関係ないものが含まれているように思われているようだ.例えば,control invocation 構文,null型,Unreachable, 型パラメータ付きthrows,関数インターフェイス型,「非ローカル」な returnなどがそうだ.Javapolisでの講演で,なぜこれらの機能が提案に含まれているのかを,これまで不可能だったことを可能にするための実用的な観点から説明したつもりだ.しかし,

    「クロージャの定義」 - hidemonのブログ
  • イヌネコ - d.y.d.

    03:14 08/08/31 LLFuture 行ってきました。まとめ記事は何百人も書いてそうなので、以下、これにかこつけて自分語りをする。 ☆ Larry Wall の基調講演。ひたすら Parser の話をしてて素晴らしかった。 ☆ 100年の言語…は、 Ypsilon の藤田さんが、エラーメッセージのわかりやすさについて考えてますか?という問いかけを されてたのが印象に残っています。個人的に この頃 から気になってるんですけども、 言語内DSL のようなものを作ること&そのDSLが正常動作するときに 裏でホスト言語で何が起きているかをまったく気にしなくていいようにすることは簡単でも、 そのDSLがそのDSLのシンタックスや静的セマンティクスとして間違っているときに適切なエラーを 出せるようにするのは非常に面倒、という感覚があります。ホスト言語の意味でのエラーを 出されてもユーザ側とし

  • はてなブログ | 無料ブログを作成しよう

    お花見:2026年 例年よりも開花にやる気を出している桜です。冬のような寒さは去り、3月末で既に満開となりました。この様子だと今年の夏も猛暑・酷暑となりそうな予感がします。その一方で、この異常気象のことなので地球さんを信頼できず、もしかしたら再び雪が積もったりする可能…

    はてなブログ | 無料ブログを作成しよう
  • はてなブログ | 無料ブログを作成しよう

    【献血デビュー】体重が少し足りず400ml献血はできなくとも、献血ルームでの成分献血ならできたぞ、という話 いきさつ 2025年の抱負として「400ml献血をできるようになる」を掲げてから、冬を越し春が過ぎ夏が終わ………なかなか終わらないな……8月も終わろうとしている。記事を書いた頃の体重からは1kgぐらい増えたところだ。 夏バテなんてどこ吹く風とばかりに、ここ数週間は私の…

    はてなブログ | 無料ブログを作成しよう