
ついにJava SE 8、つまりJDK 8が正式リリースとなりました(日本時間3月19日、早朝)。本連載「Java 8はラムダ式でここまで変わる」では、今までJavaの経験はあっても「ラムダ式は、まだ知らない」という人を対象にラムダ式や、それに関連するJava 8の新しいAPIについて解説していきますので、正式リリースされたJava SE 8を使いこなせるように、ぜひご愛読ください。 前回の「初心者のためのJavaラムダ式入門とJDKのインストール、IDEの環境構築」ではJavaでのラムダ式の概要と利点、必要性、JDK 8のセットアップ、NetBeans、IntelliJ IDEA、Eclipseのe(fx)clipseプラグインの環境構築について解説しました。実行できる準備ができたところで今回は、ラムダ式の読み書きができるように基本的な文法を見ていきましょう。 ラムダ式の基本文法の概要
こんにちは。 アキバです。 本日3/18、ついに、Java8が正式リリースされますね! もうダウンロードされましたか?ってまだですかね?私はまだです(だって公開前にエントリ書いてるんだもんね) 2014/03/19追記:Oracleのページが更新されました!→こちら さて、前回に続いて、Java8で追加された地味で便利なAPIを紹介していきます。 今回は、みんな大好きMapとConcurrent、あとちょびっとComparatorです。 3. Map操作編 (1) Map#getOrDefault() これまでは、Mapから値を取得してnullだったらデフォルト値を使用する、みたいなコードを以下のように書いていたと思います。 Map<String, String> map; // 何らかのMap String value = map.get("key"); if (value == nul
Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型は本エントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない
コードを書いているとたまにふたつのIteratorをいっしょに回すコードを書くはめになる。 /** ふたつのItaratorを並べて回すサンプル */ static boolean compare1(List<String> list1, List<Integer> list2) { if (list1.size() != list2.size()) { throw new IllegalArgumentException("個数の不一致"); } Iterator<String> ite1 = list1.iterator(); Iterator<Integer> ite2 = list2.iterator(); // 敢えてショートサーキットしない&演算を用いる while (ite1.hasNext() & ite2.hasNext()) { String v1 = ite1.nex
こんにちは! アキバです。 ...T3ブログは初登場かもしれません。ハジメマシテ。 以後お見知りおきを。 いよいよ、2014年3月、Java8が正式公開されますね。 なんと言っても、Java8の注目機能はラムダ式ですので、ラムダ式や型推論に関する記事は多いです。 世の中で「Java8」と検索すると、皆さんいろいろと記事を書かれているので、おおよその事はこれで分かっちゃうような気がします。 が、 実は地味に便利なAPIが追加されていたりすることを最近知りました。 これはあまり触れられていないぞ、と。 というわけで、このエントリでは、あまり日本語で情報の無い、しかし地味に便利なAPIに実際に触れてみます。 大事なところなので2回強調して書いてみました。 今回は、前編として4つ紹介します。 ※APIの紹介と言いつつ、コードにはラムダ式を使ったコードが普通に出てるので、ご了承ください。 (むしろ、
ADTが22.6.0になり、Java7に対応したらしいです。 http://developer.android.com/tools/sdk/eclipse-adt.html ADTのアップデートはEclipseならヘルプ→更新の確認をすれば行えます。 Java7でコードを書くにはプロジェクトのプロパティからJavaコンパイラを1.6から1.7に変更するだけです。 もしくはJava7の構文を書いてエラーにカーソルを合わせればワンクリックで設定を変更してくれます。 というわけでJava7で追加された機能をおさらいメモ。 といってもJava7の全てに対応しているわけじゃないようなので、実際にAndroidで使えたもののみ。 switch文にStringが使えるようになった 今まではbyte、char、short、intもしくはenumのみが使えたswitch文でStringが使えるようになりまし
JUnit上でJavaScriptのテストを行う方法をご紹介します。 JavaScriptのfunctionも、テストしたい! 画面を作るのはJavaScript、CSSで任せて、サーバサイドはデータのコントロールに専念するのが、最近のはやりのアーキテクチャのような気がしたり、しなかったり。 そんなこんなで、JavaScriptの重要性はますます上がって、JavaScriptがいろいろなロジックを持つことが多くなってきました。 だから、JavaScriptのfunctionも、テストしたい。 Javaなら、できる。JavaScriptのテスト。 Javaは、JavaScriptエンジンを持っているのです。JREに入っているので、別途テスト用にライブラリを取り込む必要はありません。 JUnit上でJavaScriptをテストしてみましょう。 テスト対象のJavaScriptは以下の様なコード
最近GoogleがJavaコーディング規約を公開したとニュースで知り、目を通してみたメモを書きます。 また、以前Javaのコーディング規約について調べたメモを次のURLに書きましたが、それ以降に公開されたJavaコーディング規約を探してみました。 http://www.alles.or.jp/~torutk/oojava/codingStandard/ Googleが策定・公開したJavaコーディング規約 先月、InfoQの日本語訳の記事で、Googleが最近Javaコーディング規約を公開したことを知りました。 InfoQの記事(日本語訳)GoogleのJavaコーディング規約 (Google)http://google-styleguide.googlecode.com/svn/trunk/javaguide.html さらっと目を通してみたメモを箇条書きで列挙します。 ファイルのエンコ
第4回Eclipse Formsによる“Hello World!” 松藤秀治 2007-12-13
仕事とNBA FINAL観戦と神楽坂会の幹事で大忙しの岩見です。 今回から何回かに渡って Eclipse Plugin の作成方法を紹介していきます。 Eclipse Plugin は自分で作れると便利なのですが、なかなか良い紹介サイトが無いらしいので この記事がその助けになればいいかと思います。 ちなみに僕が公開しているプラグインなどもあるので、良かったら使ってみて下さい。 Limy Eclipse Plugin プロジェクト新規作成 まずはプロジェクトを作成しましょう。 メニューから File -> New -> Plug-in Project と辿ります。 適当なプロジェクト名を付けたら、次のダイアログに進みます。こんな感じです。 この中で重要な項目がいくつかあるので説明します。 * ID このプラグインのIDとなります。 他のプラグインと被ることはできませんので、オ
2014-02-16 Android開発を始める上でおすすめの4冊 Android開発を始めたばかりの僕が読みたかった本 - Rejasupoemと丸被ってますが、あまりにこの内容に共感しすぎてこれを書いた、というのが実際の話です。 Effective Java Java SE6の名著。都合のいいことに、Androidの推奨開発環境も未だにJDK 1.6です。 中級者以上向けとされていますが、実体験としてJava初心者でも読めました。 当然、初読では分からない部分が多かったので、不明点を理解できるまで読み直し、調べながら、章ごとに内容をノートに要約しました。肝要なのは、それでも現時点の理解では突き詰められなかった点が出てくるかと思うので、それを洗い出して「何が分からないのか」を明確にしておくことです。 そうすれば実際にプログラミングしていくなかで、「あの時理解できなかったことはこのことか!
愛知県でシステムエンジニアとして働く友人のMは、プロジェクトメンバの書くJavaのクソコードに苦しめられているそうです。Mはリードプログラマとして、プロジェクトメンバがあげてくる成果物(ドキュメントとコード)のレビューをする立場にあるらしく、提出されてくる数々のクソコードをTwitterでつぶやいていました。 Mを救うことはできるのでしょうか? もし、クソコードをすばやく見つけることができたら救えるのであれば、救える見込みはあるかもしれません。 コードの問題を見つける静的解析ツール クソコードとは、おおむね次のような問題のあるコードをさすようです。 潜在的バグ バグの可能性があるコード。 重複 機能追加やバグ修正を困難にしがちなコードの重複。 設計上の問題 クラスやパッケージ間の依存関係、多すぎるメソッド引数など。 慣習違反 プログラミング言語やライブラリの慣習、コーディング規約などに違反
.apkからソースコードを取り出す方法です。 # バッチの実行コマンドなどは説明を簡略化するためにフルパスで指定しています。 手順1:.apkからclasses.dexを取得 逆コンパイルするには、まずclasses.dexが必要です。 逆コンパイルしたいapkを取得して、zip解凍ソフトで解凍してください。 # よくわからない場合は拡張子をapkからzipに変えてダブルクリックで解凍。 (今回はCドライブ直下に解凍しました) 手順2:dex2jarで.dex→.class変換 手順1で解凍したフォルダの中にclasses.dexがあると思います。 逆コンパイルするにはclasses.dexを.classファイル形式に変換します。 .dex→.class変換にはdex2jarというツールを使います。 dex2jarツールは下記サイトにあります。 http://code.google.com
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます。今回はアーカイブと圧縮の違いなどの基礎知識とともに、Java APIでJava定番のファイル圧縮形式jarやgzip、zip形式を扱う方法も紹介。 今回はデータの圧縮技術を学んでいきます。データの圧縮技術はさまざまなコンピュータ関連用途において利用されていますが、この記事では「ファイル圧縮」の話題に絞って話を進めていきます。 意外と知らない、「圧縮」って何? 私たちが普通にOSを利用していると、ファイルの拡張子が「.zip」「.lzh」「.cab」などとなっているファイルを扱うことがあります。これらの拡張子を持つファイルは、複数のファイルやディレクトリを1つのファイルにまと
こんにちは @cero_t です。 今日のテーマは・・・ラピュタ禁止令! バルス! いや違う。ラムダ禁止令、です。 さて、なかなかの滑り出しですが、今日はただのラムダの紹介ではなく、禁止令に主眼を置いて語ります。 このエントリーは、Java Advent Calendar 2013の12/16分の投稿です。 http://www.adventar.org/calendars/145 前日は @sugarlife さんの JDK 8 新機能ダイジェスト (JDK 8 Features) です。 翌日は @setoazusa さんです。 ラムダ禁止令はあり得るのか? 勉強会やその懇親会などで、たびたび「ラムダ禁止令が出るのではないか」が話題に上ることがあります。 「そりゃ禁止する組織もあるでしょうね」というのがお決まりの答えなのですが、ただそれに従うだけでは面白くありませんし、要素技術の発展も
Javaのジェネリクスの話題のひとつにnew T()したいができないので困る、というテーマがある。 先日のセッションではこの対策についても簡単に述べたが今日はそのまとめ。 まず第一に疑うべきは本当にnew T()する必然性があるか?というのが持論だが、ある種のフレームワークではその必然性がある。 O/RマッピングのフレームワークでPOJOにデータを詰めて返したい WebフレームワークでHTTPリクエストをPOJOに詰めてControllerクラスに渡したい (このあたりの議論はJavaのジェネリクスで,T.class や new T() ができず悩んだ話 (型パラメータのインスタンス化に関し、フレームワーク設計からケーススタディ) - 主に言語とシステム開発に関してによくまとまっている) ここで、これらのPOJO(Plain Old Java Object - 端的に言えばデータを格納する
この記事には複数の問題があります。 改善やノートページでの議論にご協力ください。 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2024年3月) 古い情報を更新する必要があります。(2018年12月) 独自研究が含まれているおそれがあります。(2018年12月) 雑多な内容を羅列した節があります。(2018年12月) C++とJavaとの違いは、それら言語の歴史から辿ることができる。 C++はC言語の派生規格であり、手続き型プログラミング言語にクラス(抽象データ型)を導入し、静的型付けオブジェクト指向プログラミングを実現するために開発された。C言語の設計思想を維持・継承し、C言語の利点(機械語やアセンブラに準ずる高速性やハードウェア操作性など)を一切損なわないようにしているため、他のオブジェクト指向言語に比べてコードの実行効率や柔軟性を重視している反面、安全性は犠牲
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く