IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

10周くらい遅れている感がありますが気にせず紹介します。なお実装はJDKによって異なる可能性があるので、お手元のJDKに付属しているコードをご覧になることをおすすめします。 java.util.concurrent.atomic.AtomicInteger ロックフリーでスレッドセーフな実装を実現ことで有名なjava.util.concurrent.atomicパッケージの代表格。そんなすごいことをどう実装しているのか?というのは誰もが1度は気になるはず。openjdk7のコードを読むとこんな感じです。 public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return next; } } C
@Route("contacts") public class ContactsView extends VerticalLayout { public ContactsView(ContactService contactService) { var grid = new Grid<>(Contact.class); grid.setItems(contactService.getContacts()); grid.addComponentColumn(contact -> new Image(contact.getPictureUrl(), contact.getName())).setAutoWidth(true); grid.addColumn(Contact::getName).setHeader("Name").setAutoWidth(true); grid.addColum
こんにちは id:cero-t です。 「なんとやらは風邪をひかない」と言われているところ 先日、インフルエンザに掛かってしまいまして。 重ね着+多段布団+電気毛布2枚のコンボで一気に悪寒を吹き飛ばし、 一日で熱を下げたものの、感染予防のために出社を控えたために時間でき、 ちょっとJava8などと戯れていました。 そう、今日はJava8の話題です。 今年の秋に正式リリースが予定されているJavaSE8ですが、 OpenJDKのサイトでは、既にEarly Access版を入手することができます。 JDK8 : http://openjdk.java.net/projects/jdk8/ ダウンロード : http://jdk8.java.net/download.html 1/31に、マイルストーン6がリリースされ Feature Complete となりました。 名前からすると 全機能開発
フィンランドVaadinは2月4日、Java向けのWebアプリケーションフレームワーク「Vaadin 7」をリリースした。「Google Web Toolkit(GWT)」の統合など、多数の新機能が加わっている。 VaadinはJavaを利用してWebアプリケーションを作成するためのフレームワーク。GWTをベースとし、サーバー/クライアント両方のコード作成に利用できる。リッチなUIコンポーネント、軽量、豊富なアドオンなどを特徴とする。ライセンスはApache License 2。 2009年に公開されたVaadin 6以来、3年ぶりのメジャーリリースとなる。最大の特徴はGWTがVaadinの一部として組み込まれた点。これによりクライアントサイドのウィジェッド開発対応を改善でき、Vaadinによるオフラインアプリ構築への道も開けるという。GWTに関する問題解決も迅速になるとしている。GWTは
不要なオブジェクトを回収するしくみ~ガベージコレクタ 前回の最後で触れたように、あるオブジェクトに対する参照をすべて削除すると、そのオブジェクトへはたどり着くことができなくなるため、プログラム中で使用できなくなります。このようなオブジェクトが増えていくと、二度と参照されることのないオブジェクトがヒープを占有してしまい、ヒープが枯渇してしまいます。 図1 不要なオブジェクトであふれたヒープ 日常生活では、建物内にゴミが溜まってしまい、足の踏み場がなくなっても、週1~2回あるゴミの日にまとめて捨てれば部屋はきれいになります。しかし、不要なオブジェクトでヒープが占有されてしまったJVMは、どうすれば良いのでしょうか? JVMでは、このような不要なオブジェクトを「ゴミ」として回収し、不要なオブジェクトが使用していたヒープを解放することで、ヒープが枯渇することを防ぎます。その仕組みが「ガベージコレク
Spring Framework 4.0は9月登場予定のJava 8対応。Spring Sourceが方針を発表 主要なJavaフレームワークの1つであり、Pojo(Plan Old Java Object)やDI(Dependency Injection)といった技術が注目されるきっかけの1つでもあったSpring Frameworkの次バージョン「Spring Framework 4.0」は、今年9月にリリース予定のJava 8対応になることなどを、開発元のSpring Sourceが明らかにしました。 Spring Framework 4.0のおもな特徴は、以下のようになるとのことです(日本語訳したらかえって分かりにくくなってしまったので、原文のまま引用します)。 First-class support for Java SE 8 based Spring applications:
前回、JVMとGCのしくみ - ITエンジニアとして生きるでJVMとGCのしくみについて書いた。 今回はその続きということでJVMのチューニングについて書きたいと思う。 JVMチューニングって -Xms ・・・ ヒープ全体(New領域+Old領域)の初期値 -Xmx ・・・ ヒープ全体(New領域+Old領域)の最大値 くらいしか話題に上がらないし意識しないことが多い(気がする)。 でもホントはこれだけではダメで、前回のようにPermanent領域、New領域、Old領域を意識したチューニングが必要になる。 VMチューニングを考えるその前に・・・チューニングの話をする前にまずVMの起動モードについて話したいと思う。 VMには大きく以下2つの起動モードがあり、それぞれ以下のような特徴を持つ。 ◆クライアントVMモード 起動時間を短縮し、メモリサイズを縮小するように調整されている。 VM起動時
あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyやPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー
はじめに フレームワークと言うと、多くの人は「アプリケーション全体を設計するもの」というイメージでとらえているかもしれません。しかし、もちろんそれだけがフレームワークではありません。例えばHibernateのように特定の機能に特化したものも存在します。 最近になって見られるようになってきたのが、「Ajax利用のためのフレームワーク」です。例えば、「Google Web Toolkit(GWT)」などのことです。Javaを使って、Ajax利用のWebアプリケーションを構築するフレームワークです。素のHTMLだけでは実現できないリッチなGUIを、JavaScriptの複雑なコードを書くことなく実現できるフレームワークとして、GWTは広く使われつつあります。 これまで、サーバーサイドのことばかり考えていた感のあるフレームワークの世界に、こうした「クライアントサイドの構築」を重視したものが登場する
遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド
HBaseのJuliet PauseをきっかけにしてGarbage Collection(以下GC)についてちょっと調べてみました。そういえば長年Javaでお仕事している割にはGCのこと全然知らなかった(汗 GCというのは不要になったメモリを回収することをいいますがそのアルゴリズムにはいくつかあって代表的なものとして以下の2つがあります。 Mark Sweep GC Coping GC Mark Sweep GCはオブジェクトをアプリケーションからたどっていってMarkしていきます。Markが無いのは使われていないオブジェクトなのでSweepします。メリットは実装が簡単なことでデメリットはメモリの断片化、フラグメンテーションが起きることです。 Coping GCはヒープ領域を2つに分けてオブジェクトをコピーしたり移動したりすることです。メリットはスループットが高いことやフラグメンテーション
この記事はJavaEE Advent Calendar 2012の24日目の記事です。 先日、JavaOne報告会の場で、Java EE6 vs. Spring Framework(以下Spring)の話をしてJava EE6に軍配をあげる発表をしました。 自分は昔からロッド・ジョンソン氏の「実践J2EEシステムデザイン」を素晴らしい本だとまわりの人に勧めてきました。今までJavaのWebアプリフレームワーク(以下WAF)に何を選べばいいかと聞かれたら、Springが良いと答えてきました。今回、意見を180度変えたと思う人もいそうですが、そこまでの大きな変節ではありません。Java EE6のアーキテクチャがSpring化したからです。 そもそも今でも客観的に見れば、Java EE6よりSpringのほうがアーキテクチャとしては美しいと思っています。 えっ、と思われそうですが、発表で嘘を言っ
Java Ruby on Railsのfixtureという機能は有名なので皆さんご存じかと思います。JavaでいうJUnitのTestCaseクラスに、 fixture :test と書くだけでtestというテーブルにtest.ymlという名前で用意されたテストデータが投入されるという機能です。 同じような機能はJavaでもかなり以前からDbUnitとして提供されてきましたが、使い勝手という点で圧倒的にfixtureが勝っている。というのは、DbUnitは汎用的なライブラリなので使うためにはDBへの接続定義をコードで書いたり、ロードするxmlファイルを探したり、といろんな手間があったのです。 DbUnitはデータベーステストのデファクト・スタンダードなのでJavaプログラマなら一度くらいは使ったことがあるかと思います。私も仕事柄いろんなところのアプリケーション開発環境を構築するのを手伝いま
2012年12月18日 at 10:30 午後 この記事はJava Advent Calendar 2012 の 18 日目の記事です。 昨日は @torutk さんによる「Javaで地図表示ーGeoToolsを使って」でした。 明日は @Akira Koyasu さんです。 Java に関して何を記載しようかと悩んでいたのですが、やはり Java SE 8 のネタが良いかと思い、Java SE 8 に含まれる予定の「Concurrency Update (jsr166e)」について、かんたんにご紹介したいと思います。 Java SE 8 に含まれる予定の機能一覧は下記に記載されております。 JEP (JDK Enhancement-Proposal) 上記をご覧頂くと様々な機能拡張が施される事をご確認頂けますが、並行処理についても下記の JEP として更新される予定のようですので、少しだ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く