Java Day Tokyo 2016 のセッション3-Eの資料です。 Java8, Java9の新機能がシステムの設計にどういう影響があるのかを考えてみました。

去年Androidソースコードレビューで指摘する事が多い項目まとめという記事を書いた時はアプリ全体を一度に見るような機会が多かったため、内容も大きめのものばかり書いていましたが、最近はプルリクエスト単位でレビューする機会が増えたので細かい項目についてまとめてみようと思います。 ミリ秒で時間を指定する時に自前で計算している 1000L * 60L * 60L * 24Lのようなコード。 TimeUnitを使いましょう。 24時間の場合は以下のように書けます。 TimeUnit.DAYS.toMillis(1L) ある文字列がhttp/httpsで始まるかチェック URLUtil.isNetworkUrl()を使いましょう。 ただしequalsIgnoreCaseで判定してます。 ベースURLにパラメータを付与していってURLを生成したい StringBuilder#append("&key=
なんて書いたりします。で、だいたい android-22 みたいな感じになるんですけど、でもやっぱり世界ってのは広くて、ふと見たらなんか android-١٦ とか android-၂၂ とか不思議なやつがいるんですよ。 何それ読めない。 もしかして SDK_INT が変な端末がいるのかな??と一瞬考えたんですが、 Build.VERSION.SDK_INT は名前通りプリミティブな public static final int なので疑いようがなかった。 AndroidじゃなくてJavaの仕様 でよくよく調べると、 java.util.Formatter のドキュメントに [Number Localization Algorithm](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#l10n algor
はじめに 先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。 Stringクラスのコンストラクタとcharset Stringクラスにはいくつかのコンストラクタが用意されています。我々が使っていたのはString(byte[] bytes, String charsetName)です。2つめの引数で、"MS932"や"UTF-8"のような文字集合(以下charset)を明示的に指定するものです。 ScutumのようなWAF(Web Application Firewall)は通常のウェブアプリケーションとは異なり、起動している間にさまざまなcharsetを扱うこ
Apache Tikaとは Apache Tika Apache TikaはJavaで開発されたドキュメント分析およびメタデータ抽出ツールキット。さまざまなドキュメント形式に対応しており、対象データからメタデータの抽出を実施する。Tikaは以前はApache Luceneのサブプロジェクトだったが、現在ではApacheソフトウェアファウンデーション直下のプロジェクトとして扱われている。 PDFやOffice文書からメタデータを抽出する「Apache Tika 1.0」登場 とりあえず使ってみる 今回は試しに動かしてみたいだけなので Apache Tika - Download より、tika-app-1.4.jarをダウンロード。 動作にはJava 5以上あればよいらしい。 Getting Started with Apache Tikaを参考に動かしてみるよ。 例えばQiitaのトップか
Oracle JDKのMac版がリリースされたので、早速試してみました。 インストール Apple のJDKがインストールされている場合は、Oracle JDKと共存できるのでそのままで結構です。 ダウンロード先はこちら: ダウンロードトップページ http://www.oracle.com/technetwork/java/javase/downloads/index.html Oracle Java SE 7u4 http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u4-downloads-1591156.html 上記ページにある"jdk-7u4-macosx-x64.dmg"をダウンロードします。 "jdk-7u4-macosx-x64.dmg"というファイルをマウントすると、"JDK 7 Update 04.p
Java Advent Calendar 2014 - Qiita の9日目です。9日ったら9日です。 なんか難しいエントリが多い中ですが、空気を読まずに軽めでいきます。 Javaでは色々なコードの書き方ができるけど、実際あまりやらないよなーって思うコーディングについて、やらない理由を無理矢理書いてみた。 決して「やってはいけないコーディング」と言う意味ではないです。単に「私はあまりしない」程度で、一般的な(?)業務開発でもあまり見ない、くらいの位置付け。理解した上でやる分には全く問題無いですし、そう言うもんだと思って使っても良いとは思います。 複数変数を同時に宣言する int i, j = 2, k; 同じ型の変数(フィールドでもローカル変数でも)は同じ文で宣言できます。 けど、あまり使ってるのは見ません。 同じ型でしか使えないし、フィールドだとJavaDocコメント書き辛いし、初期化式
LL から Java に移行した人がはまりがちなこと こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e
lombokは、JavaでのアクセッサやtoString、equalsなどボイラープレートなコードをコンパイル時に生成してくれるライブラリです。 ただ、こういったコードの生成は、IDEを使えば自動で行えるので、わざわざlombokを導入するまでもないと考えることもできますが、ぼくはlombokを導入するべきだと考えて、lombokを使うようにしました。 このとき「lombokを導入するべき」と考えた理由を書いておきます。 lombokとは lombokは冒頭でも書いたように、Javaのアクセッサなどを生成してくれるライブラリです。 Project Lombok import lombok.*; @Setter @Getter @AllArgsConstructor @NoArgsConstructor @ToString public class LombokSample { privat
最近、スマートフォンアプリ開発をやる人増えてきてオススメの本ある?って聞かれること多くなってきたのですが、その人のバックグラウンドによるところも大きいと思うので、自分がAndroidアプリ開発を始めたときに読んでて役に立った、あるいは読んでおきたかったという目線で、良かった本をいくつか挙げようと思います。 Effective Java Java界隈では多くの人が読んでいると思いますが、AndroidからJavaに入った人だと読んだことがない人もいると思います。 Javaを書く上でのエッセンスが詰め込まれているので、まだ読んでいない方は読むことをおすすめします。 JUnit実践入門 Androidだとテストが書かれないことが多いです。しかし、書いた方がデバッグの時間が短くなる上に保守もしやすくなりますし、テストを書きやすい構造を意識するようになって、上達が早くなりますし、設計も綺麗になります
Java7ではtry-with-resourcesでCloseableインターフェースを実装したオブジェクトを利用する際に、リソースを自動で開放することが可能となったみたいです。 つまりこれまでfinally句内で記述していたclose処理を記述する必要がないということです。 どんな感じかというと、 try (BufferedReader reader = new BufferedReader(new FileReader(new File("input.txt")))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } かなりシンプルでいい感じですね。これまでならば、
ゴールデンウィークに特に予定のなかった筆者は,「ちまたで噂のGoogle App Engine for Java(GAE/J)とFlexでスケジュール共有ツールでも作ってみよう」と思い立ちました。およそ5日間かけて開発を進めたのち,2009年5月6日に「ご都合.com(画面1)」を公開しました。その後,はてなブックマークやニュースサイトなどでご紹介いただいたおかげで,公開後6日で約2000人の方にご利用いただいています。 そこで本稿では,この「ご都合.com」の開発で実際に筆者が得た経験を通じて,GAE/JによるWebアプリケーション開発の実際とそのポテンシャルについて紹介します。 米Googleが2008年4月に発表したGoogle App Engine(画面2)は,「自分が開発したWebアプリケーションをGoogleのデータセンターで運用できるクラウドコンピューティング・サービス」です
はじめに 画像処理の応用の一つに、車や人物といった物体の検出があります。まだ、十分完成した技術とはいえませんが、車の場合は、車輪のような丸いものが一定の間隔で並んでいると車らしいと判断し、人物の場合は、丸みを帯びた白いものの真中付近に二つ並んで黒いものがあり、さらにその下の中央部に、横に長いものがあれば人物らしいと判断します。 特に、人物の検出は、防犯やセキュリティ管理の上で重要視され、研究が盛んです。最近、カメラの被写体の中から人物を探し、そこに自動的に焦点をあわせるカメラも出現しました。 画像の中から、上記のような特定のパターンを探し出すには、「テンプレートマッチング法」が良く用いられます。テンプレートとは型紙のことで、それを画像上で移動させながら比較して行くやり方です。ただし、単純な方法では、テンプレートに対して傾斜を持っている画像や、相似形であるが大きさが異なる画像は検出でき
携帯電話プラットフォーム Android に関するコミュニティサイトです。2007/11/28 : Android関連のニュース/ブログへのリンクを追加いたしました。 2007/11/12 : 初のAndroid SDK がリリースされました。 ■ Android Developers Japan ( 日本語メーリングリスト ) http://groups.google.com/group/android-developers-japan ■ Android ドキュメンテーション ( 翻訳版 ) http://www.android-ja.net/modules/xpwiki/?android-documentation-index ■ フォーラム ( 質問掲示板 ) http://www.android-ja.net/modules/d3forum/index.php?cat_id=2
最近、仕事でFlex2を触り始めました。結構楽しいです。 Flashアプリケーションが無料で、しかもタイムラインとか意味不明なことを考えずに作れるのがとっても魅力です。 で、Fedora Core 6にインストールしたのでその手順のメモ。 まずはJavaの環境が必要なので整えます。 せっかくなのでJDK 6をインストール。(日本語フォントの設定などは今回関係ないので省きます。) SUNからパッケージを持ってきてインストール。 $ sudo ./jdk-6-linux-i586-rpm.bin Javaの環境設定。 .bash_profile export JAVA_HOME=/usr/java/jdk1.6.0 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$
はてな界隈では、Javaって、あんま人気無いみたいだけど、ちょっと書かせてよ。 SIerでお仕事してると、派遣とか常駐とか言う形で、色んな会社に行って、違う会社の人とお仕事するんだけど、「経験年数n年(n>3)です」っていう人達が、恐ろしく使えなくてびっくりすることがしばしば。 特に、Java 5以降の機能 拡張for構文Enum可変長引数辺りを全く知らなかったり。 って言うか、Javaの極々基本的な知識である equals/hashCodeの実装Serializableの実装Iteratorの実装が全く出来ないんだよね…。 そういうのを知らなくても(出来なくても)業務をこなせちゃう(?)のが、Javaの言語特性だとは思わないけど、こういう人達だらけなんだよね…。 PMが新しい人を採用しようとして、ここら辺の知識を割りと厳し目にテストしたら、候補が10人居たのに全滅で、プロジェクトのスター
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く