JJUG CCC 2017 Spring の発表スライドです。Haskell 互換なふたつの JVM 言語 Frege と Eta について、モナドを利用した Java ライブラリ呼び出しの技法を解説します。 関連ブログ記事 : http://ccvanishing.hateblo.jp/entry/2017/05/21/150903
![Java8 コーディングベストプラクティス and NetBeansのメモリログから...](https://cdn-ak-scissors.b.st-hatena.com/image/square/0e1f3dabed94199ef57cfb19c5b261a8e1e64b7f/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fjava8andnblog-170520092057-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
概要(お前は何を言っているんだ) コードレビューしていると、Java8のfeature(Stream APIとかOptionalとか)を使ってるんだけど、Java7以前と大差ない書き方をされているコードをよく見かける。 もっと皆にJava8っぽいコードを書いて欲しい。そうじゃないともったいない。 (*"Java8っぽい"の基準は割りと(かなり?)私見が入っている) 言葉を尽くしても伝わりづらいので、例を作ろう。 ← これ ついでに、「無理してJava8のfeature使うことで、逆に悪くなってしまっている例」も作ろう。 対象読者 Java8でコード書いてるけど、Java7以前の書き方が染み付いちゃっていてなかなか抜け出せない人 「forやnullチェックは絶対使うべきでない」という思いが強すぎて、何でもかんでもStream APIやOptional使ってる人 Notice この記事で書いて
Java8でBDDスタイルのテストをする J8Specライブラリ J8Specは、(RSpec)[http://rspec.info/]や(jasmine)[http://jasmine.github.io/]のように、 Java8でBDDスタイルを使ってテストを記述することができるようになるユニットテストライブラリです。 JUnit runnerを使っているので、IDEから使用することも可能です。 環境 今回使用した動作環境は以下のとおりです。 OS : MacOS X 10.10.5 Java : 1.8.0_51 Gradle : 2.5 J8Specのサンプル作成 1.プロジェクト作成 ではJ8Specを使ってみます。gradle用プロジェクトを作成後、 下記 のようにbuild.gradleを記述し、j8specライブラリを追加します。 defaultTasks 'clean',
> java -jar "C:\Users\hoge\Desktop\xyz.hotchpotch.reversi-2.0.0-20160108.jar" あとは表示されるメニューに従って操作するだけです。「ConsolePlayer」を選ぶと、コンピュータと対戦することができます。 ■■■ 2. AIプレーヤーを自作してみる ■■■ 準備と作成 ふつうの java プロジェクトを作成します。(java8準拠にすることをお忘れなく。) こちら から xyz.hotchpotch.reversi-x.x.x-yyyymmdd.jar をダウンロードし、ビルド・パスに設定します。 xyz.hotchpotch.reversi.framework.Player インタフェースを実装し、AIプレーヤークラスを自作します。 ※より詳しい手順は こちらのサイト を参照してください。 動かす 上記の e
Java8 を使いこなそうとすると、やはり Date and Time API も使いこなす必要がでてくる。 我々 Perl 畑出身の人間からすると、Perl の世界では DateTime/Time::Piece というモジュールが一般的に日付の計算に使われており、iandeth.さんのブログエントリがチートシートとしてよく知られている。このいつも見慣れたエントリの体裁で、一般的な日時の操作を実用的に教えてくれるエントリが欲しくて書いた。 junit のテストケースとして書いてあるので、適当にコピペして QuickJUnit で動作確認するとよい(assertはしてないけど)。 なにかあれば教えていただけるとありがたいです。
前提 Java SE 8 + Linux 前提です。 Java で暗号的に安全な乱数をえる Java で暗号的に安全な乱数を得るには SecureRandom クラスを利用します。 SecureRandom ではいくつかの乱数生成アルゴリズムをサポートしています。 各プラットフォームでもっとも安全な SecureRandom の実装は ${JAVA_HOME}/jre/lib/security/java.security の securerandom.strongAlgorithms という項目に書いてあります。 SecureRandom#getInstanceStrong() で取得できるのはこれです。 インスタンスの取得方法 new SecureRandom() でデフォルト実装が得られます OSX や linux では NativeBlocking です(SHA1PRNGの場合もある
特定の条件で例外を投げるコードを書いたときに、それをテストしたい。なんてときがある。 このクラスの例外があがってるってことだけ判断できればいいんだけどな、ぐらいのゆるい条件のとき。 そんな時は以下のようなユーティリティを定義すればいい。 public static void assertThrows(Class<? extends Exception> exceptionClass, Code code) { boolean thrown = false; try { code.run(); } catch (Exception ex) { System.out.println(ex); assertTrue(exceptionClass.isInstance(ex)); thrown = true; } assertTrue(thrown); } @FunctionalInterface
Java 8から、jdepsというクラスの依存関係を解析するツールが増えたそうです。 Java class dependency analyzer. http://download.java.net/jdk8/docs/technotes/tools/unix/jdeps.html http://download.java.net/jdk8/docs/technotes/tools/windows/jdeps.html ちょっと興味があったので、試してみることにしました。 使ってみる まずは、スケープゴート的なソースを用意してみます。 PrintLoop.java import java.util.stream.IntStream; public class PrintLoop { public static void main(String... args) { IntStream .r
そろそろJDK 8のLambdaをちょっとは勉強しなくてはと思いつつ、Eclipseとかが無いと何も出来ない程度には惰弱なJavaプログラマ勢なので、環境を作って勉強できるように試みた。 やること Trying Out Lambda Expressions in the Eclipse IDEという「Eclipse IDEでLambda式を試そうぜ」な大変有り難い記事があるのでコレを読んでサンプルコードを試す。また、Eclipse IDE with JDK 8 supportのリンクからJDK8対応のEclipseがダウロードできるようになっている。この記事用に用意されたEclipseだと思われるが、ちょろっと試す分にはコレで充分そうであるのでコレを使う。 2014/06/11 追記 Eclipse Kepler SR2のJava 8サポートのパッチ - kagamihogeの日記 201
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く