6. コンパイルに時間かかりすぎ class C<T> { C() {} C(T t) {} C(C<T> c) {} static <U> C<U> m(C<U> c) {return c;} public static void main(String... args) { C<String> c = m(new C<>(m(new C<>(m(new C<>())))); // 1秒以下 } }
1. Introduction JDK9のリリースまで残すところあと半年ちょっとになりました。 JDK9の新機能、 Project Jigsaw によるモジュール化が取り上げれることが多いですが、 Javaの REPL 、 jshell が搭載されたのが気になりました。 今回はjshellを触るまでの環境構築と事項してみた所感を書いていきます。 筆者環境はMac OS Xです 1.1 REPL?? 読んで字のごとく、 R : Read 読んで E : Eval 評価して P : Print 出力して L : Loop 繰り返す 一行書いて実行、一行書いて実行、一行書いて... を繰り返せます。 1.2 jshell?? 他言語ではこのREPLという仕組みが一般的で、 RubyやScalaには標準で付属しています。 いよいよJavaにもこのREPLが導入されました。 そもそもJavaには言語
フレームワークとはシステム構築に便利な機能やライブラリや構成などがまとまった骨格だ。これを使えば、「正しい構成」のプログラムが初心者の方でもすぐに作れる。 下記のページではJava以外の言語に関してフレームワークをまとめている。こちらもご参考に。 それでは、本題のJavaフレームワークをまとめてご紹介していく。 Spring Framework https://projects.spring.io/spring-framework/ フレームワークの概要 Spring Frameworkは2003年にRod Johnsonによって開発された、DI(Dependency Injection)コンテナと呼ばれる、環境に依存する機能を外部から提供可能とする方法が特徴的なオープンソースのフレームワークだ。 フレームワークの特徴 Springはオブジェクトの関連付け、生成、登録などを管理する「Cor
Javaで日付/時間を扱うには従来はDate/Calendar/DateFormat等のクラスを使っていたが(以下、旧API)、Java8からはjava.timeパッケージに新しくAPIが追加された(以下、新API)。 しかし新APIはパッケージ数が5、クラス数は69もあり最初はどれをどう使うのか戸惑ってしまう。 そこで最低限これだけ覚えておけば旧APIと同じ事ができるという程度の情報をまとめてみた。 新APIの特徴 旧APIとは全く別のAPI。 データを格納するクラスは、日時/日付のみ/時間のみなど保持する要素やタイムゾーンの有無などで、複数のクラスから選べるようになった。 データ保持と日付操作(年/月/日フィールドの取得/変更など)が1クラスで出来るようになった。 (旧APIではデータ保持はDateクラス、日付操作はCalendarクラスと分かれていた) 日時クラスはImmutable
こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C
OutOfMemoryError (以下 OOME)が起こったときにお手上げ状態にならないためにも、 Java のメモリ管理の仕組みとか、 OOME が起こったときの調査方法とかを調べる。 環境 OS Windows 7 > java -version java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) Java 8 で、 Oracle の JVM を前提とした話です。 Java のメモリ管理 これを知っておかないと、 OOME が起こっても、メモリ内で何が起こっていて、どこを調査すべきで、どのように対処したらいいのかが判断できない。 なので、まずは、そもそも J
こんにちは! アキバです。 ...T3ブログは初登場かもしれません。ハジメマシテ。 以後お見知りおきを。 いよいよ、2014年3月、Java8が正式公開されますね。 なんと言っても、Java8の注目機能はラムダ式ですので、ラムダ式や型推論に関する記事は多いです。 世の中で「Java8」と検索すると、皆さんいろいろと記事を書かれているので、おおよその事はこれで分かっちゃうような気がします。 が、 実は地味に便利なAPIが追加されていたりすることを最近知りました。 これはあまり触れられていないぞ、と。 というわけで、このエントリでは、あまり日本語で情報の無い、しかし地味に便利なAPIに実際に触れてみます。 大事なところなので2回強調して書いてみました。 今回は、前編として4つ紹介します。 ※APIの紹介と言いつつ、コードにはラムダ式を使ったコードが普通に出てるので、ご了承ください。 (むしろ、
前回のエントリーでは「Java関係ないやん」的なツッコミも受けましたが、 今回からは、Javaを前提にしていきます。 Javaで文字から文字コードを作る 新人くん「Javaで文字から文字コードを作りたいんですが、どうすれば良いんですか?」 先輩社員「getBytesすれば一発だね」 新人くん「getBytesした後のバイト配列から上手く文字列を作れないんですが・・・」 先輩社員「それは別の話だね」 前回のエントリーでは、WordやIMEを利用した文字と文字コードの変換方法を説明しましたが、 では、Javaではどうやれば良いのでしょうか。 Javaで文字から文字コードを作るには、 先輩社員も言っている通り、String#getBytes(charset)するだけです。 具体的なコードは、以下のようになります。 String str = "あいうえお"; byte[] utf8 = str.g
札幌は大荒れ、の予想だったのですが、今のところ大変穏やかな天候です。こんにちは。こむろです。 この記事はJava Advent Calendar 2014の17日目になります。 昨日16日は@zephiransasさんの「Lambda-behaveでテストを書こう」でした。 Java8の素晴らしき世界 Java8を使ってプログラミングしていると、新しい機能を色々と使うことで簡潔で読みやすいコードを記述することが出来ます。これが思いの外楽しくるんるん気分でコードを書くことが出来ます。今までのように型をいちいち書かなきゃとかネスト地獄みたいなところを、少しだけ、でも大胆に改善することが出来、久々にJavaでコードを書いていて楽しいと思った時間でした。AndroidはJavaではn(ry 特にここ数ヶ月、Play for JavaでJava8を利用した開発をしていたのですが、その中でStream
What's Google Guava? Googleが開発しているOSSのjava core libraryで、Googleの多くのJavaベースのプロジェクトで使用されており、 Java 1.5 以上で使用できる。 昔、Google Collectionとして開発されていた。 Apache Commons の Lang、Collectionsなどに替わる機能を提供していて、パッケージ名を見れば大体の機能について想像がつくと思います。 com.google.common.annotations com.google.common.base com.google.common.cache com.google.common.collect com.google.common.escape com.google.common.eventbus com.google.common.hash c
演算時の型変換のルール 例えば 16 / 2 のように演算子の左辺と右辺の値のデータ型がともに int 型であればそのまま演算が行われますが、 16 / 2.0 のように片方が int 型で片方が double 型の場合には型変換がまず行われます。 演算時の型変換が行われるルールは次のようになっています。 (1) どちらかの値が double 型の場合は他の値を double 型に変換する (2) どちらかの値が float 型の場合は他の値を float 型に変換する (3) どちらかの値が long 型の場合は他の値を long 型に変換する (4) (1)から(3)に該当しない場合は両方の値を int 型に変換する このルールは(1)から順に適用され、いずれかに適用されればそれ以降の変換は行われません。例えば double 型と long 型の値の演算では、(1)のルールが適用される
SEとして、数年。。。技術力で食べていきたい!! という思いと、なかなか最新の技術はWEBで調べても わからないこともあるってことで、同じように困っている人がいるかも と思い設立しました。 どうもどうも、ゆきむです。 前回までで、超導入部分の話ではございますが、 Mavenのインストールからeclipse上での簡単な利用方法までを紹介させていただきました。 Mavenを使うとライブラリ管理がすごく楽になるので、世の中にある便利なライブラリを 使ってみようかな?という気持ちの閾値が低くなったものと思います。(少なくとも私はそうなりました。) そのままの流れで幾つか、Javaのライブラリを紹介していきたいと思います。 今回は、fastutilというライブラリについてです。 Javaのオートボクシング・オートアンボクシングの落とし穴 Javaをやっている皆様は、おそらくオートボクシング・オートア
国際化にも対応、java.util.ResourceBundleクラス Java言語からプロパティファイルを扱う2つ目のAPIは、java.util.ResourceBundleクラスです。このクラスは以前の記事の「プロパティファイルを使った国際化」でも紹介していますね。java.util.Propertiesクラスとは異なり、java.util.ResourceBundleクラスでは国際化対応をするための機能が備わっています。 java.util.ResourceBundleクラスを利用したプロパティファイルの読み込みは下記のようになります。悩ましいことに、先に紹介したjava.util.Propertiesクラスとはプログラミングの仕方が異なります。
Level up your Java™ code With Spring Boot in your app, just a few lines of code is all you need to start building services like a boss. New to Spring? Try our simple quickstart guide. Most [of our] services today are all based on Spring Boot. I think the most important thing is that [Spring] has just been very well maintained over the years...that is important for us for the long term because we d
AJAX (10) AJAX - ASP.NET (5) AJAX - JAVA (6) AngularJS (8) Apache Lucene (1) ASP.NET (17) ASPNET (4) Bootstrap (9) CSS (3) Dot Net (8) Endeca (1) GridView (9) HTML (5) HTML5 (4) J2EE (8) Java (27) JavaScript (2) JNDI (1) Jquery (20) jQuery UI (5) JSON (1) jTable (5) Latest (2) log4j (1) MySql (2) Responsive Design (8) Search (5) Spring MVC (6) Spring Security (5) Struts2 (1) Trending (9) Web Desig
DI:依存性の注入とは何か?:Spring Frameworkで理解するDI(1)(1/3 ページ) Javaのエンジニアであれば最近、「Dependency Injection」や「DIコンテナ」「Spring」、または「Seaser2」といった名前を目にしたことがあるのではないでしょうか。これらは次世代のEJB(EJB 3.0)に取り込まれる動きがあるなど、最近非常に注目されているキーワードであり、今後のJava開発を語るうえで避けては通れない概念の1つになるとされています。 この連載は、「Spring」というフレームワークを利用して、J2EE開発における「Dependency Injection(DI)」というデザインパターンから得られるメリットを紹介し、J2EEの今後の方向性を理解する助けとしていただくことを目的としています。 Dependency Injection:依存性の注入
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く