本日、ついに JavaSE 9 がリリースされました! そこで、かねてから噂になっていた JEP 254: Compact Strings がどのように実装されているのか調べてみました。 Compact Strings の概要 これまで String クラスや StringBuilder クラスなどの内部では、文字列を UTF-16 でエンコードして char 配列で保持していました。 つまり、一文字あたり*1常に char ひとつ = 2バイト分のメモリを使っていました。 しかし、これだと 1 バイトで表せる LATIN1(ASCII コード + ラテン文字)の文字列の場合、その半分が 0x00 になるという無駄がありました。 そこで、内部表現を変更し、文字列が LATIN1 のみで構成されるときは 1 文字を 1 バイトで保持するようにリファクタリングされました。 ちなみに、LATIN
Android Test Night #1 https://testnight.connpass.com/event/63753/ で発表した(する)スライドです。Read less
Java 9の起動パラメータ java.locale.providers に Java 8 と同じ優先度で国際化を行う指定をします。 java -Djava.locale.providers=COMPAT,SPI この設定で日付のフォーマットが Java 8 と同じように動作するようになり、自動テストが成功しました。 以上で 750 個のテストがすべて成功するようになりました。次はいよいよJava 9で既存のソースコードをコンパイルします。 Java 9でコンパイルして Java 9で動かす ヌーラボのアカウント基盤には Java のコンパイル対象が約 1,360 ファイルあります。目標は 1,360 のソースコードがJava 9 ですべてコンパイルできることです。 コンパイラの設定を Java 9に切り替える コンパイラを Java 9に切り替えます。Java 9のバージョン指定には注意
JavaもJava8でstream処理やラムダ、Optionalの型などが追加されモダンなプログラミングが幾つか書けるような機構が適応されてきました。 しかし、Javaで書くプログラマーはモダンな実装する文化は浸透しているのでしょうか? 今回はモダンな実装の仕方として、「Immutable Programming」と「nullの扱いについて」について書いてみようと思います。 前提 Webアプリケーションサーバを実装する時を想定しています。 もちろんネイティブの実装のときにも適応される部分が多いです。 Java8の書き方で説明します。 Immutable Programming(イミュータブルプログラミング)とは 凄く簡単に説明すると、変数に再代入しないということです。 全てfinalを付けてプログラミングするようなものですね。 まだ、やったことがない人はそんなことが出来るのか?ということを
追記:記事のタイトルがRxJava 2.xを対象にしているように見えますが、正確には詳解RxJava 1.xの2本目です>< 謝辞:チームでは本当に自由にRxJavaを使わせてもらっていて、今回の記事の内容も実際にアプリでReactiveな表示更新ロジックを書こうとして習得したものです。 この記事ではRxJavaのBackpressureの仕組みについて説明しつつ、Backpressureを使って問題をうまく解決できるパターンを紹介します。深夜テンションで一部お見苦しい点がございますがお許しください。 これまでのあらすじ RxJavaに3日で入門し、Androidアプリのリスト操作、非同期処理、変更通知の課題を解決した話 http://qiita.com/yuya_presto/items/152fa80d073d865cfc90 詳解RxJava1:Scheduler、非同期処理、sub
今日はJavaライブラリの中でも非常に基本的でよく使われるメソッド、 System.currentTimeMillis() を見ていきましょう。 このメソッドはミリ秒単位の精度で現在時刻を知らせます。このことから、このメソッドの処理能力は重要ではないと思う人もいるかもしれません。計測間隔が100ミリ秒や500ミリ秒なのであれば、現在時刻を取得するのに0.1や0.2ミリ秒かかったからといって誰も気にしないでしょう。しかし、やはり頻繁にこのメソッドを呼び出したいケースがありそうです。下記に例を挙げます。 異常に長い実行時間を検知し知らせる場合。例えば、HTTPリクエストを実行するのにかかる時間を計測するケースを考えます。この場合、1ミリ秒以下が計測されると思われることでしょうが、実際にはこのメソッドを使えばゼロが出力されることに注意して下さい。しかし時間が異常に長い(例えば100ミリ秒以上)場
@BladeCoder が書いた Kotlinの隠れたコストの調査 という一連のブログ記事は、ある Kotlin 構文にどのように隠れたコストがあるのかを説明しました。 実際の隠れたコストは、普通、不可視オブジェクトのインスタンス化やプリミティブ値のボクシング/アンボクシングに起因します。これらのコストは、Kotlinコンパイラがどのように上記の構文をJVMのバイトコードに変換するのかを理解していない開発者には特に見えづらいのです。 しかし、何らかの数字を示さずに隠れたコストの話をするだけでは、実際にどのくらいコストのことを心配すべきなのかという疑問が湧いてきます。コードベースのいたるところで、これらのコストを考慮すべきでしょうか?あるKotlin構文は単に全面的に禁止されるべきでしょうか?あるいは、最も範囲の狭い内部ループの中でだけ考慮されるべきでしょうか? さらに挑発的な言い方をすれば
You can find an overview of a lot of design patterns in Wikipedia. It also mentions which patterns are mentioned by GoF. I'll sum them up here and try to assign as many pattern implementations as possible, found in both the Java SE and Java EE APIs. Creational patterns Abstract factory (recognizeable by creational methods returning the factory itself which in turn can be used to create another abs
私が仕事として扱ったことのあるプログラミング言語は以下があります。 Java C/C++ Python PHP javascript この中でも Java は特別で、15年近く愛用してきました。 Javaの優れている点 Java の優れている点として以下があるとおもいます。 10年前のコードも動かせる信頼性の高いVM クロスプラットフォーム動作 豊富なライブラリ群 高速動作 信頼性の高いVM インタープリタ言語の中にはランタイムのバージョンアップで動作が変わってしまったりすることも多く、なんたらenv といったアプリケーションを使って任意のバージョンのランタイムに固定するのが慣例となっていますが、Javaにおいては最新のJVMを入れれば大体なんとかなります。 クロスプラットフォーム動作 私は長らく Windows を開発機として使用し、Linux サーバで動作させる。ということをしてきまし
平日は仕事前の30分、仕事後は時々晩御飯待ちの間に読書するようにしています。 今日まで読んでいたのはこちら。 books.rakuten.co.jp 厚さは結構あるのにとっても軽く、最近の製紙や製本技術の向上には驚かされます。 そして本を開いてみるとびっくり。案外字が大きいw なのに読んでみたら内容が濃い! 読み終わって晩御飯までちょっと時間があったのでインスタで呟いたりしてました。 現場で役立つシステム設計の原則、ようやく読み終わった。大事だと思う所に付箋。 インスタは大体ツイッター連携してるので、ツイッターにも流れまして・・・。 そしたら・・・ なんと!著者さまが反応してくださって、心臓飛び出るかとw 食べてたチキンのフライ吹きそうになった・・・ どこに付箋を貼ったのか興味を持ってくださってたみたいです。 今度こちらの読書会に行く予定でして。 devlove-kansai.doorke
RxJava On Android Guide Introduction As Android Developers we have tons of choices when it comes to handling concurrency. Which one do we choose? This guide focuses on using RxJava on Android. This is not just another blog post nor just a RxJava on Android tutorial. This is a full blown ultimate guide about learning RxJava on Android. This guide is over 7000 words long. It breaks down the anatomy
こんにちは! こんにちは!富田(@tommykw)です。 先日、株式会社葵さん、ChatWorkさん、m-gramさん、エウレカさんと5社合同のKotlin勉強会があり、Kotlin導入についての発表させていただきましたので、共有させていただきます。 Kotlin開発Tech Talksとは connpass.com 5社では共通点としてヒトをつなぐサービスを展開しており、5社共にKotlinを導入しています。Kotlin導入度合い、開発リソース、会社規模も異なる環境下で、それぞれのKotlinのノウハウ、知見を共有するための勉強会でした。上記リンクより、登壇者の方のスライドを閲覧できますので、良かったらご覧ください。 発表内容 speakerdeck.com 私はコネヒトにジョインして約10ヶ月間、Kotlinの導入、運用を行い、その中で得たKotlinとJavaの相互運用についての情報
以下のPRを投げて、マージされました。 Add integration test cases for checking the behavior of generated code https://github.com/hotchemi/PermissionsDispatcher/pull/339 このPRについて語ってみます。 想定読者 Annotation Processingに興味がある人 Annotation Processingを利用したライブラリを作っている人 PermissionsDispatcherに興味がある人 細かい単語を気にしない人 compile-testingによるテスト Annotation Processingのテストで検索するとだいたいcompile-testingを使えと書かれています。 compile-testingとは A library for te
Spring Boot とは Spring プロジェクトが提供する様々なライブラリやフレームワークを、手っ取り早く使えるようにしたフレームワーク。 Dropwizard の Spring 版みたいなの。 ビルドすると単独の jar ファイルができあがる。 Web アプリの場合は、組み込みの Tomcat が起動する(Jetty や Undertow に切り替え可)。 Web アプリでなく、普通の Java プログラムとしても動かせる。 Maven や Gradle などのビルドツールを利用する(Ant でもできなくはない)。 使用したいコンポーネントを依存関係に追加するだけで、結合に必要な設定などが自動で行われる。 環境 Java 1.8.0_45 Gradle 2.3 Spring Boot 1.2.3 Hello World 実装 buildscript { repositories
Update: a comprehensive Spring Boot + Kotlin tutorial is now available. Just in time for Kotlin 1.0 release, we are adding support for Kotlin language to https://start.spring.io in order to make it easier to start new Spring Boot projects with this language. This blog post is also an opportunity for me to explain why I find this language interesting, to show you a sample project in detail and to g
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く