随時更新予定
Java Advent Calendar 2017
公式サイト
Java Advent Calendar 2017 - Qiita
今年も Advent Calendar の季節がやってきました。
Java をネタにしたブログを公開してしまいましょう。
Java といえば、サーバーからクライアント、クラウドに組み込みと、さまざな分野で使われており、そこで使われている技術もたくさん。
Java の Tips でもいいし、ライブラリの使い方でもいい、自作のツールの紹介など、Java に関していれば何でもかまいません。ぜひこの機会に、Java のブログを書いてみましょう!!
qiitaのアドベントカレンダーを使用していますが、もちろんqiita以外からの投稿もできます!
普段お使いのブログがあるかたはそちらでご参加ください!Supported by JJUG.
内容・まとめ
[12/01] 2017年のJavaとこれからのJavaの話
2017年のJavaとこれからのJavaの話 - Qiita
Javaの2017年を振り返る記事ですね。
個人的に一番大きかったのは、Java9とリリースモデルの変更ですかね?
Java9は、リリース前から勉強してたので、さほど驚きはしませんでしたが、リリースモデル変更のニュースは、リアルにファッ!?って感じでしたわ。
話を聞いて、リリースモデルの変更には納得しているので、あとはそれをきちんと実行できるかどうかですね。
他者の営業の人と話すことがあって、嫌Javaの流れがあるらしいので、なんとか歯止めがかかればいいなぁ~とは思ってます。
あと、私事ですが、Oracle Certified Java Programmer, Silver SE 8を取ったこともあったな~とか思ってます。
本当は、Goldまで取る気でいたのですが、ちょっと舐めすぎてましたね。。。
年末に再チャレンジ予定です。
[12/02] 時間文字列を絶対変換してやる!
ビックデータ解析しようと思ったけど、日付がフォーマット違ったりするのをどうやって差分なくすかの話。
よくある話だと思うが、経験したことないひといるのだろうか?
他システムと連携でなやんだことが結構ある派のおいらです。
やっていることは単純で、想定できるフォーマットをすべて保持しておき、パースして合致したフォーマットを使ってる。
パースのよくわるパターンですね。
意外と思いつかないもんですけど。
見てて思ったけど、テストコードあると理解が簡単。
使う想定が分かるから。
コードの説明は、テストか例を挙げて説明しないとダメだと感じた。
[12/03] Gaugeで自動テストする
Gaugeっていうテストツールの紹介。
実際Githubで公開されてるテストソースで試したけど、結果が日本語で見えることより、テストを日本語でかけるほうが、なんか違和感を感じた。
いつも英単語に接してるせいからかも知れない。
どっちかというと、テストようのツール的なものを作って、文章でテストケースをかけることに価値があると思う。
使えるAPIを提供ところが出てくれば流行りそうな予感はする。
懸念としてあるのは、テストの2重管理にならないかなぁ~って思いました。
これ、Step複数つけられたりできないのかな?
多言語対応されたらおもしろそうだな~って思った。
[12/04] JMX接続をひたすらやっていく
JMX接続をひたすらやっていく | Developers.IO
お金がなかったので、EC2はしなかったですが、docker使ってElasticsearchを起動してJMXで接続してみた。
jconsoleは使ったことなかったけど、案外、簡単に接続できた。
有用そうなのは伝わってくるけど、いまいち、スレッド数とかメモリ使用率とか、どうなると悪いのか分かんないんだよね。。。
実際に、運用管理してみないと分からない分野なのかもしれない。
ココらへんは、弱い認識がある。
[12/05] JUnit実践入門のMockitoの部分をJMockit (version 1.37) でやってみた
JUnit実践入門のMockitoの部分をJMockit (version 1.37) でやってみた - bati11 の 日記
JMockitは、使ったことあるから、内容は最新バージョンに置き換えた見た系。
知らない単語があったので、いろいろと変わってそう。
あとでキャッチアップする。
[12/06] JavaのCyclicBarrierを使って平行処理を行う
JavaのCyclicBarrierを使って平行処理を行う - Qiita
タスクの同期処理。
CyclicBarrierっていう存在はしらなかった。
使ってみて思ったけど、問題は、各スレッドで使った値をどうやって連携するかだね。。。
バグりそうだから、どうやって値連携するかが課題になりそう。
ちなみに、サンプルで参考にしたのは、下記のサイト
Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい - argius note
[12/07] Java 9時代のAES 256暗号
なんとなく暗号化は知っているから、話はわかった。
ココらへんは、政治的な意図で変わってるんだな〜と素人的に考えてしまった。
[12/08] 日本語でのJavaDocの書き方
書き方は知っていたので、お作法的なほうが参考になったかな。
サマリーと詳細の書き分けは、クセで改行を無意識にいれてた。
タグから開始するのが一般的なのか?
普段は、改行とかいれるの面倒くさいから、<pre>
タグで囲んでたわ。
@Throws
は、発動条件を書いてるから、なんとなく似通ってはいるんだな。
ですます調や用語統一は、文章書くうえで必然ですね。
知らないルールが他にもありそうな気がしてならない。
冬休みにちょっと調べてみる。
[12/09] Javaにおけるインタフェースの使い道を今一度考える
Javaにおけるインタフェースの使い道を今一度考える - Qiita
インタフェースのメリットについての再考話。
Javaの良い点は、インタフェースがしっかりしていることだと、俺は思っている。
ダメな現場ほど、インタフェースが上手く使えてないことが多い。
インタフェースを抑えることがJavaで一番重要だから、再考したりするのは、一定の価値があると思います。
自分の中の考えを整理する上でもね。
[12/10] Payara Micro の設計と実装 - 2017 年版
Payara Micro の設計と実装 - 2017 年版 - notepad
Payaraって知らなかったけど、nodejsみたいなもん?
要するに、JavaEEをIoT製品に乗っけて、サーバーを動作させて外部連携するためのライブラリって理解でいる。
実際に、自分もそれに近い製品を作っているから、イメージ的にそんなもん。
Java9には、まだ未対応か。。。
対応が終われば、もっと軽量化できそうな気がする。
まだ、行末を見守りますか。
[12/11] Eclipse Collectionsのイケてるところイケてないところ
Eclipse Collectionsのイケてるところイケてないところ - Qiita
Eclipse Collectionsの存在は知っていたのですが、使ったことはないですね。
データ構造に焦点を置いたライブラリなのかな?って印象。
とりあえず使ってみないと、なんにもいえないので、冬休みに使ってみて、感想あげます。
[12/12] RxJavaがしてくれるというThread管理に、混乱したのでコードで実験
RxJavaがしてくれるというThread管理に、混乱したのでコードで実験 - Qiita
RxJavaの検証ですね。
RxJavaは、知っているのですが、本で読んだだけで実験段階まで踏み込めていない分野でした。
内容的には、Observerの実装ですかね?
業務ではよくかくデザインパターンなので、自分も一回使ってみようと思います。
とりあえず、タスク行き~
[12/13] ふわっとStreamで試したいこと試してみた。
ふわっとStreamで試したいこと試してみた。 - Qiita
streamのベンチマークですね。
Java8出てきたときに、ベンチマークは自分もしていたし、扱う要素が小さいと差が出ないことも知っていた。
Java9の新機能は、まだ試したことはなかったかな?
ReactiveStreamの方に目が行ってしまっていた。
ちゃんと検証しないと、置いて行かれそうだから、冬休みに実験します!
[12/14] Javaでお手軽に絵文字を使うライブラリ emoji-java の紹介
Javaでお手軽に絵文字を使うライブラリ emoji-java の紹介 - Qiita
見た感じSlackっぽいな~って思ったら、似せてるのか。
フロントにJava要素があるってのが珍しいな。
JavaFXとかだと、利用価値があるかもね。
[12/15] ReactorでN+1問題な処理を実装してみた話
ReactorでN+1問題な処理を実装してみた話 - 谷本 心 in せろ部屋
Reactorを使った、ノンブロッキング処理、ブロッキング処理の比較。
おそらく、今後はCPUの限界が見えてきたので、いかに効率的に処理するかが焦点になってくると思うんですよ。
そのためにも、ノンブロッキング処理というのは重要で、感覚を養っておいたほうがいいと思ってます。
今は、Java使ってないけど、TypescriptだとJavascriptがシングルスレッドだから、ノンブロッキングをJavaよりシビアに考えないといけない。
おかげで、ちょっとばっかし、ノンブロッキングの概念はつかめたかな~?とも思っている。
暇な時間を見つけたら、試し実装してみたい。
また、冬休みタスク行きですな。。。
[12/16] 【JDK 10】varを使った型推論
まだ早期ビルド版、試せてないんですよね~。
Typescript使っているから、想像は容易なんですけど、あのJavaが!って言った感じですわな。
理屈を考えると、意外と簡単にわかる。
要はローカル変数にジェネリックスが適用されていると考えればいい。
型情報がどこかにあれば、あとは自明だよね?って理屈ですよね。
まだ試せてないので、落とし穴があるかもしれない。
また、冬休みタスク行きですな。。。
[12/17] CDI 2.0をJava SEから使ってみる
CDI 2.0をJava SEから使ってみる - ひらおかゆみのなげやりブログ
JavaSEでCDI使うデモ。
SpringBootで似た感覚を味わっているから、それほど驚きはしなかった。
JavaEEもSpringBoot化しているかな?って思った。
[12/18] Javaのコンストラクタの挙動について確認した。
Javaのコンストラクタの挙動について確認した。 - 怒Mは思いつきでモノを言う
コンストラクタの話ですね。
Javaのコンストラクタは、staticメソッドの順番が入ってくるとややこしくなるイメージがある。
コンストラクタのオーバーロードは、覚えるのに苦労した思いがあるけど、覚えてしまうとなんてことはない。
あと、継承関係とかで悩んでいたことがあったなぁ~と思い出してしみじみしてた。
[12/19] Java Stream APIチートシート
Stream APIは、覚えるんだけど、種類が多くて、毎回調べる事が多い。
最初見た時は、全然分からなかったけど、一回、自分の考えが腑に落ちると分かりやすさがます。
最近は、もっぱらTypescript使っているけど、StreamAPIの利用方法は、すごく役立つ。
普遍的な知識として、確実に覚えておいたほうがいい。
最近だが、チートシートつくる人が多い印象がある。
流行ってるのかな?
[12/20] 鬼が笑う。2018年Java界隈あえての一択。
鬼が笑う。2018年Java界隈あえての一択。 - Qiita
ごめんなさい、まだMaven使っているものです。。。
Mavenが普及しすぎてしまっているからかもしれないが、なかなか乗り換えられない。
GradleでもMavenのリポジトリ使えるのは知ってますけど、Mavenとの差別ポイントが明確になってない気がするんですよね。
画面に向いてないのは、同意。
JS専用のプラグインがあるのかも知れないが。。。
ちなみに、重いのは、Preiadesでごちゃごちゃプラグイン入っているせい。素のやつを使うと、ものすごく早い。ただ、機能が少ないけどね。。。
VisualStudioCodeは、JUnitに対応したりしていて、開発環境として「あり」と最近思い始めてきた。
Typescriptを触っているので、開発は、Visual Studio Code使ってる。
JavaもTypescriptも同じ環境で使えるので、違和感なく使えるのは、いいなぁ~と思う。
なんか、フロントエンドとサーバーサイドの両方見る人にとっては、重宝しそう。
IntelliJも、使いたいとは思っているが、なかなか手が出せてない。
最近、Javaを書くことが少ないってのもあるが。。。
「IntelliJ IDEAハンズオン」買ったのだが、読む機会がないんだよね。。。
冬休み中に読まないと。。。
[12/21] 3分で理解するG1ガベージコレクション
G1GCの説明ですね。
内容は、一通り知っていたので、分かっていました。
図示されているのが分かりやすいと思いました。
GC周りは、そこまで気にしたことがなかったので、概要を知っている程度です。
仕事でよく使うようになったら、集中的に学習するんですけどね。。。
[12/22] 分散トレーシングシステムのZipkinを使ってみた話
分散トレーシングシステムのZipkinを使ってみた話 - Qiita
Zipkinというトレーシングライブラリの話。
マイクロサービスのためのライブラリって印象。
マイクロサービスは、どこでエラーが発生しているのかわかりにくいので、それを明解するためのライブラリ。
環境構築が大変そうなので試すのは、冬休み入ってからにします。。。
[12/23] 『Java本格入門』を片手に Java の勉強を始めた息子のために
『Java本格入門』を片手に Java の勉強を始めた息子のために - Qiita
『Java本格入門』の書評かな?
読んだことあるので、さら見程度で終わらせた。
[12/24] Java9(OracleJVMに基づく)キャッチアップ
Java9(OracleJVMに基づく)キャッチアップ - Qiita
Java9のまとめ。
javase9 what's newをベースに翻訳した感じかな?
主要なのは知っていたけど、細かいのまで把握しきれてないな~と気づいた。
冬休みに復習しておかないといけないと、強く思う。
[12/25] 【SpringBoot】 RestAPI チュートリアル
【SpringBoot】 RestAPI チュートリアル - エンジニアだけどブログを始めてみた
SpringフルスクラッチのCRUDアプリの作成ですね。
SpringDataや、Swaggerは知っているけど、使ったことない。
特にSwaggerには、興味がある。
リアクティブなドキュメント生成に、かなり興味が惹かれる。
早いうちに試してみたい。
感想
知らないことは、ほとんどない。
ただ、知っているだけで、試したことがないのが多い。
業務でJavaを使ってないってのもあるが、乗り遅れてるな感が半端ない。
ソースを書く習慣が、まだ身についてない。
来年は、実装をもっと重視する年にしたい。