ブログ

JDK

Java 17の新機能(1)

Java 17がリリースされました。今回リリースされたJava 17はLTS(Long Term Support)版です。主な変更点を紹介していきます。

JEP 306: 常時厳密性を維持する浮動小数点セマンティクス復活

浮動小数点数の計算でオーバーフロー等が起こる場合に,CPUによって計算結果が異なってしまう現象を避けるために,常にIEEEの規格に準拠した計算を行うようにするものである。この問題が発生するのは,SSE2命令セットをサポートしていないCPU(Pentium Ⅲ以前)のマシンということなので,影響を受ける環境は少ないと思われる。

JEP 356: 疑似乱数生成器の拡張

PRNGという新たな疑似乱数生成器を導入し,既存の乱数生成器も含めて統一的なインタフェースを提供する。java.util.random.RandomGeneratorというインタフェースが導入されている。さらにこれを継承したSplittableRandomGeneratorJumpableRandomGeneratorLeapableRandomGeneratorArbitrarilyJumpableRandomGeneratorStreamableGeneratorというインタフェースが提供されている。

JEP 382: 新macOSのレンダリングパイプライン

新しいmacOSのグラフィックAPIであるMetalに対応させたものである。

JEP 391: macOS/AArch64 Port

Appleがx64アーキテクチャからAArch64への移行を進めていることに対応して,AArch64へ対応するためのものである。

JEP 398: Applet API削除への非推奨

Java AppletのAPIが非推奨となりました。以下のクラス/インタフェースを使用するとコンパイラが警告を出すようになっている。

  • java.applet.Applet
  • java.applet.AppletStub
  • java.applet.AppletContext
  • java.applet.AudioClip
  • javax.swing.JApplet
  • java.beans.AppletInitializer

JEP 403: JDK内部のカプセル化を強化

--illegal-accessオプションによって可能であったJDK内部のAPIを利用することが不可能となっている。

JDK

OpenJDK 17をビルド

GitHubから間もなくリリースされるOpenJDK 17のソースコードをダウンロードして,ビルドしてみました。ビルド方法に書かれている通りに実行すればよいのですが,かなり多くのライブラリが必要なので,何度もconfigureをくり返すことになりました。

make
Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release'
Compiling 1 files for BUILD_TOOLS_HOTSPOT
Compiling 8 files for BUILD_TOOLS_LANGTOOLS
Parsing 2 properties into enum-like class for jdk.compiler
Compiling 13 properties into resource bundles for jdk.javadoc
Compiling 12 properties into resource bundles for jdk.jdeps
Creating hotspot/variant-server/tools/adlc/adlc from 13 file(s)
Compiling 7 properties into resource bundles for jdk.jshell
Compiling 16 properties into resource bundles for jdk.compiler
Compiling 2 files for BUILD_JVMTI_TOOLS
Compiling 127 files for BUILD_java.compiler.interim
Compiling 402 files for BUILD_jdk.compiler.interim
Compiling 229 files for BUILD_jdk.javadoc.interim
Creating support/modules_libs/java.base/server/libjvm.so from 1064 file(s)
Compiling 185 files for BUILD_TOOLS_JDK
Compiling 2 files for COMPILE_DEPEND
Compiling 11 properties into resource bundles for jdk.jartool
Compiling 71 files for COMPILE_CREATE_SYMBOLS
Compiling 11 properties into resource bundles for jdk.management.agent
Compiling 3 properties into resource bundles for jdk.jdi
Compiling 5 properties into resource bundles for jdk.jlink
Compiling 3 properties into resource bundles for jdk.jlink
Compiling 1 properties into resource bundles for jdk.jlink
Compiling 224 properties into resource bundles for jdk.localedata
Compiling 11 properties into resource bundles for java.base
Compiling 6 properties into resource bundles for java.base
Compiling 2 files for BUILD_BREAKITERATOR_BASE
Compiling 2 files for BUILD_BREAKITERATOR_LD
Compiling 11 properties into resource bundles for java.logging
Compiling 3071 files for java.base
Compiling 89 properties into resource bundles for java.desktop
Compiling 71 files for COMPILE_CREATE_SYMBOLS
Creating ct.sym classes
Compiling 127 files for java.compiler
Compiling 18 files for java.datatransfer
Compiling 1846 files for java.xml
Compiling 10 files for java.instrument
Compiling 35 files for java.logging
Compiling 330 files for java.management
Compiling 141 files for java.net.http
Compiling 15 files for java.scripting
Compiling 5 files for java.transaction.xa
Compiling 22 files for java.smartcardio
Compiling 272 files for java.xml.crypto
Compiling 61 files for jdk.internal.jvmstat
Compiling 120 files for jdk.charsets
Compiling 406 files for jdk.compiler
Compiling 35 files for jdk.crypto.ec
Compiling 68 files for jdk.dynalink
Compiling 3 files for jdk.internal.ed
Compiling 44 files for jdk.httpserver
Compiling 64 files for jdk.incubator.foreign
Compiling 50 files for jdk.incubator.vector
Compiling 100 files for jdk.internal.le
Compiling 51 files for jdk.internal.opt
Compiling 205 files for jdk.internal.vm.ci
Compiling 30 files for jdk.jartool
Compiling 229 files for jdk.javadoc
Compiling 24 files for jdk.management
Compiling 136 files for jdk.jdeps
Compiling 1 files for jdk.jdwp.agent
Compiling 240 files for jdk.jfr
Compiling 4 files for jdk.jsobject
Compiling 15 files for jdk.management.jfr
Compiling 1806 files for jdk.localedata
Compiling 9 files for jdk.net
Compiling 2 files for jdk.nio.mapmode
Compiling 11 files for jdk.random
Compiling 33 files for jdk.sctp
Compiling 9 files for jdk.unsupported
Compiling 94 files for jdk.xml.dom
Compiling 14 files for jdk.zipfs
Compiling 15 files for java.prefs
Compiling 30 files for java.security.sasl
Compiling 106 files for java.rmi
Compiling 77 files for java.sql
Compiling 15 files for jdk.attach
Compiling 75 files for jdk.crypto.cryptoki
Compiling 1 files for jdk.internal.vm.compiler
Compiling 1 files for jdk.internal.vm.compiler.management
Compiling 40 files for jdk.jcmd
Compiling 251 files for jdk.jdi
Compiling 84 files for jdk.jlink
Compiling 11 files for jdk.jstatd
Compiling 199 files for java.naming
Compiling 95 files for jdk.jshell
Compiling 2768 files for java.desktop
Compiling 16 files for jdk.naming.dns
Compiling 8 files for jdk.naming.rmi
Compiling 16 files for java.management.rmi
Compiling 220 files for java.security.jgss
Compiling 56 files for java.sql.rowset
Compiling 31 files for jdk.management.agent
Compiling 30 files for jdk.security.auth
Compiling 16 files for jdk.security.jgss
Compiling 1 files for java.se
Compiling 18 files for jdk.accessibility
Compiling 3 files for jdk.editpad
Compiling 956 files for jdk.hotspot.agent
Compiling 64 files for jdk.jconsole
Compiling 47 files for jdk.jpackage
Compiling 8 files for jdk.unsupported.desktop
Creating support/modules_libs/java.base/libverify.so from 1 file(s)
Creating support/modules_libs/java.base/libjava.so from 59 file(s)
Creating support/native/java.base/libfdlibm.a from 57 file(s)
Creating support/modules_libs/java.base/libzip.so from 5 file(s)
Creating support/modules_libs/java.base/libjimage.so from 6 file(s)
Creating support/modules_libs/java.base/libjli.so from 8 file(s)
Creating support/modules_libs/java.base/libnet.so from 21 file(s)
Creating support/modules_libs/java.base/libnio.so from 22 file(s)
Creating support/modules_libs/java.base/libjsig.so from 1 file(s)
Creating support/modules_libs/java.prefs/libprefs.so from 1 file(s)
Creating support/modules_libs/java.instrument/libinstrument.so from 12 file(s)
Creating support/modules_libs/java.management/libmanagement.so from 9 file(s)
Creating support/modules_libs/java.rmi/librmi.so from 1 file(s)
Creating support/modules_libs/java.desktop/libmlib_image.so from 50 file(s)
Creating support/modules_libs/java.desktop/libawt.so from 72 file(s)
Creating support/modules_libs/java.desktop/libawt_xawt.so from 51 file(s)
Creating support/modules_libs/java.desktop/liblcms.so from 27 file(s)
Creating support/modules_libs/java.desktop/libjavajpeg.so from 46 file(s)
Creating support/modules_libs/java.desktop/libawt_headless.so from 26 file(s)
Creating support/modules_libs/java.desktop/libfontmanager.so from 63 file(s)
Creating support/modules_libs/java.desktop/libjawt.so from 1 file(s)
Creating support/modules_libs/java.desktop/libsplashscreen.so from 67 file(s)
Creating support/modules_libs/java.desktop/libjsound.so from 18 file(s)
Creating support/modules_cmds/java.rmi/rmiregistry from 1 file(s)Creating support/modules_cmds/java.scripting/jrunscript from 1 file(s)

Creating support/modules_cmds/java.base/java from 1 file(s)
Creating support/modules_cmds/java.base/keytool from 1 file(s)
Creating support/modules_libs/java.base/jexec from 1 file(s)
Creating support/modules_libs/java.base/jspawnhelper from 1 file(s)
Creating support/modules_libs/java.security.jgss/libj2gss.so from 3 file(s)
Creating support/modules_libs/java.smartcardio/libj2pcsc.so from 2 file(s)
Creating support/modules_libs/jdk.attach/libattach.so from 1 file(s)
Creating support/modules_cmds/jdk.compiler/javac from 1 file(s)
Creating support/modules_cmds/jdk.compiler/serialver from 1 file(s)
Creating support/modules_libs/jdk.hotspot.agent/libsaproc.so from 10 file(s)
Creating support/modules_libs/jdk.crypto.cryptoki/libj2pkcs11.so from 14 file(s)
Creating support/modules_cmds/jdk.hotspot.agent/jhsdb from 1 file(s)
Creating support/modules_libs/jdk.incubator.foreign/libsyslookup.so from 1 file(s)
Creating support/modules_libs/jdk.incubator.vector/libsvml.so from 36 file(s)
Creating support/modules_cmds/jdk.jartool/jar from 1 file(s)
Creating support/modules_cmds/jdk.jartool/jarsigner from 1 file(s)
Creating support/modules_cmds/jdk.javadoc/javadoc from 1 file(s)
Creating support/modules_cmds/jdk.jcmd/jinfo from 1 file(s)
Creating support/modules_cmds/jdk.jcmd/jmap from 1 file(s)
Creating support/modules_cmds/jdk.jcmd/jps from 1 file(s)
Creating support/modules_cmds/jdk.jcmd/jstack from 1 file(s)
Creating support/modules_cmds/jdk.jcmd/jstat from 1 file(s)
Creating support/modules_cmds/jdk.jcmd/jcmd from 1 file(s)
Creating support/modules_libs/jdk.management.agent/libmanagement_agent.so from 1 file(s)
Creating support/modules_libs/jdk.management/libmanagement_ext.so from 8 file(s)
Creating support/modules_cmds/jdk.jconsole/jconsole from 1 file(s)
Creating support/modules_cmds/jdk.jdeps/javap from 1 file(s)
Creating support/modules_cmds/jdk.jdeps/jdeps from 1 file(s)
Creating support/modules_cmds/jdk.jdeps/jdeprscan from 1 file(s)
Creating support/modules_libs/jdk.jdwp.agent/libdt_socket.so from 2 file(s)
Creating support/modules_libs/jdk.jdwp.agent/libjdwp.so from 43 file(s)
Creating support/modules_cmds/jdk.jdi/jdb from 1 file(s)
Creating support/modules_cmds/jdk.jfr/jfr from 1 file(s)
Creating support/modules_cmds/jdk.jlink/jimage from 1 file(s)
Creating support/modules_cmds/jdk.jlink/jlink from 1 file(s)
Creating support/modules_cmds/jdk.jlink/jmod from 1 file(s)
Creating jdk/modules/jdk.jpackage/jdk/jpackage/internal/resources/jpackageapplauncher from 3 file(s)
Creating jdk/modules/jdk.jpackage/jdk/jpackage/internal/resources/libjpackageapplauncher.so from 17 file(s)
Creating support/modules_cmds/jdk.jpackage/jpackage from 1 file(s)
Creating support/modules_cmds/jdk.jshell/jshell from 1 file(s)
Creating support/modules_cmds/jdk.jstatd/jstatd from 1 file(s)
Creating support/modules_libs/jdk.net/libextnet.so from 1 file(s)
Creating support/modules_libs/jdk.sctp/libsctp.so from 2 file(s)
Creating support/modules_libs/jdk.security.auth/libjaas.so from 1 file(s)
Compiling 4 files for BUILD_JIGSAW_TOOLS
Optimizing the exploded image
Stopping sjavac server
Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release'

動作確認をすると,きちんとバージョン情報が表示されました。

# ./build/*/images/jdk/bin/java -version
openjdk version “17-internal” 2021-09-14
OpenJDK Runtime Environment (build 17-internal+0-adhoc.root.jdk17)
OpenJDK 64-Bit Server VM (build 17-internal+0-adhoc.root.jdk17, mixed mode, sharing)
雑記

消費税の任意中間申告の誤指摘

本日,税務署から電話がありました。税務調査かと思い,一瞬緊張しましたが,消費税の任意の中間申告が期限から遅れて申告されていたので,納税された金額を還付すると言われました。とりあえず,税務署の職員さんがそう言うのだから納期に遅れてしまったのだろうと思い「わかりました」と応じて一旦電話を切りました。その後,国税庁のWebページで確認すると,任意の中間申告は対象期間が1月から6月で,申告は対象期間の末日の翌日から起算して2月以内ということでした。つまり,6月末の翌日である7月1日から起算して2月後の8月末まででした。税務署に電話をして確認すると,その通りということで,無事に受理して頂きました。

https://www.nta.go.jp/taxes/shiraberu/taxanswer/shohi/6611.htm

これで還付されてしまったら,国税不服審判所に不服申立をするところでした。

情報セキュリティ

個人/SOHOでも導入可能なLinux用セキュリティソフト

サーバーに限れば広く使われているLinux OSだが,個人やSOHOなどで導入可能なセキュリティソフトの選択肢はあまりない。大手のセキュリティソフトベンダもLinux向けの製品を出してはいるものの,大規模ユーザ向けのものが多く,小規模事業者や個人には手がだせない。

以下の製品は無料または,比較的安価であり,1台から導入可能で,個人でも導入できる。

ESET File Security for Linux

https://www.eset.com/jp/business/server-antivirus/file-security-linux/

ESETはスロバキアの企業が開発したセキュリティソフトである。キヤノンITソリューションズが代理店となっている。同社の価格表によると,新規ライセンスが年間20,000円,更新ライセンスが年間10,000円となっている。

価格表 https://eset-info.canon-its.jp/business/file_security/price.html

Dr.Web

Dr.Webはロシアの企業が開発したセキュリティソフトで,日本語でのサポート対応を行っている。年間3,410円で利用できる。

https://products.drweb.co.jp/home/linux/

Comodo Antivirus for Linux

Comodo Antivurus for LinuxはComodo社が開発したセキュリティソフトで,無料で使用できる。英語の情報に頼ることにはなるが,無料とは思えないクオリティである。

https://www.comodo.com/home/internet-security/antivirus-for-linux.php

ClamAV

ClamAVは無料で利用できる。メールサーバ用に開発されたもののようである。誤検知が多かった印象を持っている。公式の日本語情報はないため,英語のドキュメントを読む必要がある。

http://www.clamav.net/

情報セキュリティ

Linux版セキュリティ対策ソフトDr.Web導入

Linux版のセキュリティ対策ソフトDr.Webを導入してみました。ロシアの会社が開発したものですが,日本にも拠点があり,日本語でサポートを受けられます。価格も年間3410円と安価です。

https://www.drweb.co.jp/

[root]# drweb-ctl appinfo
ConfigD; 1349; RUNNING 1; Installed (ConfigD ScanEngine FileCheck Update ESAgent NetCheck StatD GateD MailD Antispam UrlCheck CloudD MeshD LinuxGUI LinuxSpider LinuxFirewall), Should run (Update), UUID: 52eef68d-78ad-4c72-8d57-d2cea838f819, created: 2021-Sep-04 21:31:31
Update; 2195; RUNNING 1


[root]# drweb-ctl log
2021-Sep-06 12:18:37 ConfigD [1349] Notice: License number 147896597, expires 2022-Sep-08 12:11:08
2021-Sep-06 12:18:37 Update [2195] Notice: Update 11.1.6.2012181656: Ready for service
2021-Sep-06 12:18:38 Update [2195] Notice: Downloaded vrpatch-56.kwo (38842 bytes)
2021-Sep-06 12:18:53 Update [2195] Notice: Downloaded vrpatch-57.kwo (35479 bytes)
2021-Sep-06 12:18:53 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/antispam/vrpatch-56.kwo”
2021-Sep-06 12:18:53 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/antispam/vrpatch-57.kwo”
2021-Sep-06 12:18:53 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/drl/antispam/version2.lst”
2021-Sep-06 12:24:28 Update [2195] Notice: Downloaded vrpatch-58.kwo (35915 bytes)
2021-Sep-06 12:24:28 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/antispam/vrpatch-58.kwo”
2021-Sep-06 12:24:28 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/drl/antispam/version2.lst”

情報セキュリティ

セキュリティソフトの誤検知

セキュリティソフトのMcAfee製マカフィーリブセーフが,私が作成した暗号化アプリをマルウェアとしてブロックしてくれました。実行ファイルが隔離されてしまいました。中身もすべてわかっていますので,ビルドし直した上で再度インストールして,ホワイトリストに登録しました。幸い,一般に提供しているものではなかったので被害者は自分だけでした。

新型コロナウイルス関連

新型コロナウイルスワクチン接種

本日,東京大手町の自衛隊東京大規模接種センターに行き,新型コロナウイルスのワクチン接種を受けてきました。まったく痛みはなく,注射針を刺されたことがわかりませんでした。副反応は1回目の接種で5割,2回目の接種で8割の人が何らかの異常を呈するそうなので,何かはあると覚悟しています。

新型コロナウイルス関連

IOCに質問

日本政府,東京都,JOCがはっきりした説明をしてくれないので,IOC(ジュネーブ)に質問メールを送りました。

Dear. International Olympic Committee.

  Hi, I am KUBO, an inhabitant in Tokyo. I have a question about the Olympic Game 2020 Tokyo. But all of Japanese Government, Tokyo Metropolitan government and Japanese Olympic Committee make ambiguous explanations. Would you give me a definite answer?

 Will the Olympic Game 2020 Tokyo, which was postponed a year, be held?  Dr. OMI, Shigeru, who is former regional director of WHO western Pacific region, says "Under infection circumstance (of COVID-19) nowadays, we usually do not  hold". Because the expert on infection says like this, I will evacuate from Tokyo if the Olympic Game be held. I must make  reservations for accommodations before long.

<参考訳>
親愛なる国際オリンピック委員会様

私は東京の住民で久保と申します。東京オリンピック2020について質問があります。しかし,日本政府,東京都,日本オリンピック委員会のすべてが曖昧な説明をしています。はっきりした回答を頂けますでしょうか?

 1年延期されていた東京オリンピック2020は開催されるのでしょうか? 尾身茂先生(元WHO西太平洋地域事務局長)は,「今の(COVID-19)の感染状況では,普通はやらない」と述べました。感染症の専門家がこのようにおっしゃるので,もしオリンピックが開かれるのであれば私は東京から避難します。まもなく宿泊の手配をしなければなりません。