java

JDK 21のswitch式でpattern matchが遅かった件の2024年2月時点の続報

4ヶ月くらい前の以下のblogの続報です xuwei-k.hatenablog.com

JDK 21のswitch式でpattern match書いたら10倍以上遅い件

switch式の結果javapしたらhttps://t.co/xMc0YEYsrgjava.lang.runtime.SwitchBootstrapsとtableswitchが使われることに気がついたが、これ巨大なswitch式をJDK 21以降で書いた場合、同等の巨大なmatch式をScalaで書くよりも速度が速い可能性があるのでは??…

JDK 21でswitch式でjava.lang.MatchExceptionを発生させるサンプル

めでたくJDK 21がリリースされたので多少試していたわけですが、switch式に色々と網羅性検査が入ったわけで、Scalaと比較してどうなるか?を試したメモ。

Cats EffectとVirtual Threads

ScalaMatsuri 2023のdiscordの会話を雑に勝手に転載しておくだけのblog。 一番高度というか面白い話でメモしておきたかったので。

Scala 3でJavaのアノテーション継承したclassが定義できない問題の対策

github.com

Scalaにおけるunboxing

今更な話題なのですが、解説したくなったので解説を書いておきます。

Scala 2のJDK17対応状況

最新情報は以下の公式の情報をご覧ください。で終わるのですが、これ書いている2021年9月現在の情報を簡単にまとめておきます(ただのtweet貼り付け) https://github.com/scala/bug/issues?q=label%3Ajdk17 公式のJDK17関連のbug https://docs.scala-lang.org…

JDK14のRecordsに対するshapeless.Generic自動生成マクロを書いた

TODO: あとでLabelledGenericとかその他色々も作りたい LabelledGenericは実装した 実装が雑なので細かい部分バグがあるかもしれない ライブラリにしてpublishする・・・? リリースした

maven centralやsonatypeやbintrayでTLS 1.1のサポートが打ち切られたことによるそれぞれのJavaのversionへの影響

最初sbtにissueたてるか、などとtwitterで言っていたけれど、そんなに困っている人多くなさそうだし、blogにだけまとめておけばいいか、という気持ちになったので、ひとまずまとめておく。

Appleから新しくOSSとして発表されたSwift NIOとNettyを雑に比較

nettyのコミッターの人、appleに勤めてる有名人だから、swiftにあまり関係ないけど特別ゲスト的な感じでswiftのカンファレンスで登壇するのかと思いきや、こんなことやってた(コミット数1位)のか、なるほどーhttps://t.co/ZkRg8kn5A0 pic.twitter.com/yrZiuP…

ScalaコンパイラやsbtとJava 9の対応表

Java 9が広まってきて、しかし多少古いScalaやsbtのままやろうとしてハマっている人を見かけることが多くなってきたので、簡単にまとめておきます。

いくつかのScalaライブラリをJava9でビルドしてみた知見

sbt 0.13.14-RC1からJava9に(無理やり?)対応したらしいので、いくつか試しているので、現状の知見を簡単にメモ https://github.com/sbt/sbt/pull/2951 https://groups.google.com/d/topic/sbt-dev/iu6qT12R6q0/discussion

FunctionalInterfaceに内部classやinterfaceがある場合のScalaとJavaでのラムダのキャッシュの動作の違い

この前書いたやつ( Java8のラムダとScala 2.12(LambdaMetafactoryによるシングルトンのキャッシュ) )の発展版というか、Scalaで違い見つけたので貼っておくhttps://gist.github.com/xuwei-k/9e988896648fd7389de1350b8cb9d81e

Java8のラムダとScala 2.12(LambdaMetafactoryによるシングルトンのキャッシュ)

結論から言うと、Scalaでも以下と同じように頑張るようになるんやで、なので2.12以降はSAMかつ純粋なシングルトンにできる場合は、明示的にnewしないほうが効率いいかもしれないよ、という話

猫にドヤ顔でvolatileの重要性を指摘した話

JVM楽しい ✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌ https://gist.github.com/xuwei-k/4be690a606bec83683563cfff525b3a5 https://github.com/typelevel/cats/pull/989

Joda-timeではなくJava8のtimeを使おう

と作者も言ってる(?)ので、そうしましょう。 Joda-Time now in maintenance mode as Java 8 usage rises. Usage questions at Stack Overflow: URL URL2016-02-22 08:09:02 via TweetDeck

Javaの再帰的ジェネリクスとワイルドカードと型推論とScala

とにかく以下のコード御覧ください。

"Theorems for free!"とParametricityとJVMとCLRのジェネリクスの実装の違いの関係

という題だけ思いついて、中身を書ける気がしないので、誰か書いて欲しい(他力本願)

sonatypeで複数人にリリース権限を付与してもらう方法

sonatype自体の詳しい説明はしませんよ。まずsonatypeにアカウント作ってリリースする方法は、今でも以下の方法で可能だと思うのでこれ読んでください。http://pab-tech.tumblr.com/post/23240310972/scala-maven-central

msgpack javaについて

色々あってmsgpackいじってたりするのですが、とりあえず見つけたバグとかその他色々まとめてみる。

jol(Java Object Layout)という、Javaのオブジェクトがどのようにメモリ上にレイアウトされるのか?というツールをsbtから便利に使えるようにする

最近公式にopenjdkの一部になったらしい?ので、まだあまり有名じゃないかもしれませんが、以下のような便利ツールがあるの知ってますか?http://openjdk.java.net/projects/code-tools/jol/

mavenリポジトリに上がっているsources.jarの中身を手軽に読みたいときのための何かを作った

https://github.com/xuwei-k/java-src http://java-src.appspot.com/org.scalaz/scalaz-core_2.11

最新のJavadocやScaladocへのリンクのBadgeを表示する便利サービス作った

githubなどのREADMEに、

Functional Javaの発表してきた

自分の発表資料 http://shibuya-java.connpass.com/event/7060/

JavaでFreeモナドを表現するためのテクニックやexistential type(存在型)の話

久しぶりにJavaで遊んで、JavaでFree Monad書いた際に得られた知見を記しておきます。https://github.com/xuwei-k/free-monad-java筆者は、Javaの言語仕様や、型理論に関して、人並みかもしれないけど(?)別に専門家ではないので、あまり厳密なこと求められて…

JavaでFree Monad

書いたhttps://github.com/xuwei-k/free-monad-java

Travis CIがJava8に対応したらしい

You can now test your Java libraries and applications with Java 8 EA release on Travis CI! URL2013-11-27 17:56:36 via Bufferhttp://about.travis-ci.org/blog/2013-11-26-test-your-java-libraries-on-java-8個人的にはわりと嬉しいのだが、ほとんど…

sonatypeに特定のURLでアクセスすると、javadocやscaladocを展開して表示してくれる機能がある件

たとえばScalazだったら以下のURLhttps://oss.sonatype.org/service/local/repositories/releases/archive/org/scalaz/scalaz-core_2.10/7.0.3/scalaz-core_2.10-7.0.3-javadoc.jar/!/index.html#packageこの機能なんなの?あまり使われてるの見たこと無いけ…

ScalaとLombokを比べた場合のメリットとデメリット

最近いくつかlombokが話題になってた lombokで快適Java生活 サイバーエージェント公式エンジニアブログ JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 Java特有の冗長なコードを簡潔に記述する「Lombok」 codezine ので、twitterなどでは何度…

java.util.stream.StreamのメソッドとScalaの対応

またJava8の話。 Scalaの場合、ListでもStream*1でもVectorでも同じメソッドあるので、あえてどのclassなのかは明示しません。基本はJavadoc読んで雑に調べただけで、ちゃんと全部実行して試したわけじゃないので、明らかに間違ってたら教えて下さい。http:/…