やったー、とうとう、Javaもヒアドキュメント使えるようになったんだってね。
えっ3カ月たってたの
最近、知ったので、寝る前に、しらべてみるとします。わくわく。寝る前に、しらべてみるか。
以下、独断と偏見と眠たい頭で、書いた文章が続きます。ご注意を!
Java11は、AWSのCorrettoが、いいとおもうけど、安定板しか、対応してないみたい。
しらべてみると、いまのJavaって、Linuxのディストリビューションがたくさんあるみたいな感じになってきているみたい。
で、いま、がんばっている、Javaは、Liberica JDK 13みたい。
特徴は、オラクルより、サポート期間が長い。
オラクルの、ライセンス縛りは、商売上手というか、
自分は、いやな感じをしてたけど、リベリカは、優しい感じがするなぁ。
なにが、いやかというと、新しいJava言語で、なにか、儲けてから、ライセンスのとか請求されるのなら、払えるけど、
練習するだけとかで、お金を取ろうとすると、新規参入者が減って、言語が廃れる流れになるとおもうの
マイクロソフトと、アップルだって、アップルは開発環境XCodeを無償で提供したから、アプリがたくさん増えて、便利になって、覇者になったと自分は、おもっているの。
応援しよう。
リベリカも、自分のところのJavaで作ったアプリを販売するサイトを作るビジネスモデルにしたら、世界とれるとおもうんだけどなぁ。
ライセンスよくわからんけど、ここからダウンロードできるみたい。調べる気もおきない。どうせ、ひどい縛りなんでしょ。はいはい。みたいな感じになってる。
https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html
Javaが優れているのは、言語自体ではなく、クラスをすべて構文解析済みで管理手している開発環境が神だからで、クラスをちゃんとオブジェクト指向でつくってあれば、ビジネスの概念と、オブジェクトに紐づけることができ、クラス数が1万を超えるソフトでも、開発環境の力をかりて、不具合なく管理できる点にあります。 各ライブラリのバージョンとの不整合も少ないです。
いま、仕事で、RubyとかGoとかさわらさせていただいておりますが、巨大なシステムであれば、あるほど、Javaの構文を完璧に構文解析して管理している開発環境のメリットを感じずにはいられません。
一括リファクタリング機能である。レベルの低いSEは、メンテナンスを考えずに、変数に、一文字のアルファベットを、短いコーディング俺スゲーとかおもって使いがちだが、ほかのひとからみたら、なんの意味?と、なっている場合が多い。だいたい、炎上しているプロジェクトは、そういう「オレオレ」プロジェクトで、メインの人が抜けてだれも、サポートできなくなってしまったというケースが少なくはない。でも、Javaだったら、変数を意味あるものに、置き換えるのが、プロジェクトに規模に関係なく、非常に簡単に行えるわけだ。
そのためには、単体テストが、自動化されていなくてはならない。
単体テストするには、DIの仕組みを使った設計にしなくてはめんどくさい。
というわけで、SpringBoot?開発環境のSTSで、管理されたプロジェクトは、大規模開発に向いているわけなのだ。
というわけで、インストールしてっと。。。
ああ、そろそろねむくなってきたから、きょうは、このへんにしておこう。
おやすみなさい。
おはよう、続きです。
STSは、ZIPでダウンロードしたけど、解凍するとき、windows標準のZIP解凍と、lplsでの解凍は、2つファイル解凍に失敗した。
パス長 260 文字制限により正常動作しないとか、なんだろうか。7-zipで解凍した。
おもうんだが、マイクロソフトは、7-zipのライセンス買って、デフォルトにすべき。
こんなん、OSレベルでサポートすべきものでは?と思う。解凍スピードも、10倍ぐらいは、早い感じがしたぞ。早くて、エラーが起きない。神ですな。
Javaのいいところは、依存ライブライの解決ツールがあるというところだと思う。
RubyのプロジェクトとかGoとかは、バージョンアップ時に、依存ライブラりが、最新にすると、バグっていて。。。パッチをあてるとか、をやるはめになるケースが多い。
Rubyや、Goは、最初のスタートダッシュはいいかもしれないけれど、メンテナンスには、向いていない。
でも、Mavenは、しっかりいい仕事してくれる。で、その後継のGradleは、Mavenのお堅い、XMLが、スクリプト言語化されたイメージだな、自分はそう感じている。
SDKMAN、macでいうところのbrewみたいなもの。
あれ、まだ、STSってば、ギリギリ対応してないの?
しらべてみたところ、Eclipse4.14から、Java13に対応していて、いま(2019/12/20)のSTSは、Eclipse4.13ベース。。。
うぉーーー、ちょっとフライングしちまったぁ。。。
そういえば、Java12さわってなかった、きっと、神様が、Java12も、いいんじゃよ、
といっているに違いない。
プロジェクトを作るときにスタータプロジェクトってあるよ。なんだろう。
いろいろなプロジェクトのひな形集。例えば、Amazon使う場合、とか、結構細かくあるみたい。
自分は、とりあえず、いま、ストリームを扱うのに興味があるので、kafkaと、kafka-streamを選択してやってみることにしよう。どうなるの?、わくわく。
あまり選択しないと、よく使う、lombokとかを手動でいれなくてはならないようだ。
RESTサーバを選ばないと、サーバの設定とか自分で頑張る必要があるみたい。
@SpringBootApplication //Configuration //EnableAutoConfiguration //ComponentScan //CommandLineRunner.run 実行します。 @RestController public class MyKafkaApplication implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(MyKafkaApplication.class); public static void main(String[] args) { SpringApplication.run(MyKafkaApplication.class, args); } public void run(String... args) throws Exception { System.out.println("hello world"); } @RequestMapping(value = "/", method = RequestMethod.GET) public ResponseEntity<String> index() { System.out.println("hello world index"); logger.debug("index"); return ResponseEntity.ok("result!"); } }
ビルドしてjarファイル作って、実行して、ブラウザのlocalhostにアクセスして、動作しているのを確認しました。
Kafkaは、アンチwindows勢ですぞ。いろいろ試してみた結果、確信にいたりました。
特に、Confluent社は、アンチWindowsですな。
なので、Windowsユーザは、まずは、Apatch版を選ぶべし、
https://kafka.apache.org/downloads
ダウンロードするも、.tgz拡張子の洗礼をうけることになるが、7-zipで、華麗に解凍する。
で、まずは、zookeeperの起動なのですが、ドキュメントみると、シェルファイル実行例しか書いてない!
でも、ご安心を。
たとえば、アパッチのサイトに、
bin/zookeeper-server-start.sh config/zookeeper.properties
と、書いてあれば、その.shに対応する.batファイルが、あって、下記のように書けるのです。
bin/windows/zookeeper-server-start.bat config/zookeeper.properties
にあるのです。
QuickStart?に説明書いてないけど、解凍したファイルみたら、そうなってました。
やってみたら、動いたんで、自分の推理はあってたみたいです。
次の、手順はkafkaサーバの起動です。
bin/kafka-server-start.sh config/server.properties
と、QuickStart?のガイドにかいてあったので、windowsに読み替えてみましょう
bin/windows/kafka-server-start.bat config/server.properties
で動くはず、えいっ、うごいた。やっぱりな。
ん~、ログファイルの書き換え処理で失敗してる風だが、こまかいところは、いいや。
トピックっていうのは、水道管につけた名前みたいなもの。
ガイドでは、
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
と説明されていたので、windowsでは、
bin/windows/kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
と、書くのだろう。なにも、レスポンスがないな。むっつり型のコマンドなのか?
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
とあるから、windowsによみかえて、
bin/windows/kafka-topics.bat --list --bootstrap-server localhost:9092
を実行してみる。
test
とでたので、やはり、むっつり君だったようだ。
下記のサイトを見た、
https://qiita.com/d-yosh/items/aaf77f17f20812d1c3d9
このサイトでのトピック名はsampleのようだった。
今回作ったトピック名はtestなので、
template.send("test", "value1");
のように、おきかえた
クイックスタートでは下記のようになっているので、
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
windowsに読み替える
bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning