2020年12月4日金曜日

JDK8と11の非互換

 仕事などでは古いJava環境を使っている場合もあり、そんななか、JDK11で8互換でビルドしてJDK8で動かないものがあったのでメモ

 NoSuchMethodError が

java.lang.NoSuchMethodError: java.nio.ByteBuffer.xxxx
と発生。
BufferとByteBufferは実装が変わっているようで、実装されている部分が何かで互換性がなくなっているっぽい。 
コードは互換になるがライブラリまでは見てくれないというJDKの罠はよくある。今回もそんなもののひとつか。
 詳細はこっちかな
 https://stackoverflow.com/questions/61267495/exception-in-thread-main-java-lang-nosuchmethoderror-java-nio-bytebuffer-flip

AES高速化をもう少し

割と最速だったJavaで作ったAES実装もJDKのAESがOpenSSLかなにかのハードウェア実装を使うようになったおかげで数倍の差がついてしまった。KCyper-2がまだよくわからないのでAESをつついてみたりPKIの方を見たり。 Intel CPU にはAES NI というA...