2024年1月7日に行われたFukuoka Engineers Dayでの登壇資料です。
オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。 Javaに影響与えるか、Javaから影響を受けるか、という感じですね。 Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基本要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 Smalltalk Simulaから発想を得て「オブジェクト指向」という言葉を生んだのはアラン・ケイでした。 しかし、モデルとしてはSimulaとは異なりメッセージングを主体としたものでした。また、アラン・ケイの「オブジェクト指向」はプログラミングのパラダイムだけではなく、人がコンピュータをどのように扱うかというメタファであり、ダイナブックというハードウェアやそのユーザーインタフェースを含
ま、このくらい知っておいてもらわないと&とりあえずこんだけ知ってればだいたいの処理が書けるクラス・インタフェースをまとめてみました。2024年版。 詳しく知りたい人は「プロになるJava」を! java.lang.Class java.lang.Exception <- new java.lang.Integer java.lang.Object <- new java.lang.Runnable java.lang.String java.lang.System java.lang.Thread java.nio.file.Files <- new java.nio.file.Path <- new java.io.InputStream java.io.InputStreamReader java.io.BufferedReader java.io.OutputStream java.
本記事は「珠玉のアドベントカレンダー記事をリバイバル公開します」企画のために、以前Qiitaに投稿した記事を改訂したものです。 はじめにPub/Sub型のメッセージングアーキテクチャを採用するにあたっては、kafkaなどのブローカーミドルウェアや、Amazon SNS、Google Cloud Pub/Subなどのマネージドサービスを利用するケースが多いかと思います。ところでPostgreSQLでも実はPub/Subができます。 すでに業務でPostgreSQLを使っていれば、新たにPub/Subブローカーを構築しなくても、疎結合なシステム間通信を簡易的に実現できます。 本記事ではこの機能の紹介と、Pub/SubクライアントをJavaで実装する場合の選択肢、考慮点を示しています。 ※実行環境はPostgreSQL 16.2とJava 21です ※データベースの文字コードはUTF-8としてい
Java 21が2023/9/19にリリースされました。 https://mail.openjdk.org/pipermail/jdk-dev/2023-September/008267.html The Arrival of Java 21! LTSであり、パターンマッチングや仮想スレッドが正式化され、プレビューとして入ったString Templatesや無名クラス&インスタンスメインメソッドも面白い機能なので、大切なリリースになっていると思います。 詳細はこちら JDK 21 Release Notes Java SE 21 Platform JSR 396 OpenJDK JDK 21 GA Release APIドキュメントはこちら Overview (Java SE 21 & JDK 21) 追加されたAPIまとめはこちら https://docs.oracle.com/en/
WebAssemblyでOpenJDKのJavaランタイムを実装、JarファイルをそのままWebブラウザで実行できる「CheerpJ 3.0」正式リリース Webブラウザ上で実行可能なWebAssembly製JavaVM 前バージョンのCheerpJは、Javaのバイトコードを事前コンパイルによりJavaScriptコードに変換することで、Webブラウザ上でJavaアプリケーションを実行可能にするコンパイラを中心とするツール群でした。 今回の新バージョン「CheerpJ 3.0」では、WebAssemblyによってOpenJDKのJavaランタイムを完全に実装したと説明されています。これにより、JITコンパイラなどを含むJavaVMの機能をWebブラウザ上で実行できるようになりました。 Javaアプリケーションのソースコードは不要で、ビルド済みのJarファイルをそのままWebブラウザで実行
[速報]古いJavaや.NETのコードを最新のJavaにAIが自動変換する「Amazon Q Code Transformation」、AWSが発表。AWS re:Invent 2023 Amazon Web Services(AWS)は、ラスベガスで開催中のイベント「AWS re:Invent 2023」の基調講演で、生成AIを用いて多様なAIサービスを提供する「Amazon Q」を発表。Amazon Qの機能の一部として、古いJavaや.NETのコードを最新のJavaや.NET対応に自動変換する「Amazon Q Code Transformation」を合わせて発表しました。 参考:[速報]AWS、Copilot対抗となる「Amazon Q」発表。生成AIによるシステム開発支援や業務支援など、多様なAIサービスを提供。AWS re:Invent 2023 Amazon Q Code
macOS Sonoma 14.4にアップデートするとJavaがクラッシュするとオラクルが注意喚起。Appleシリコン搭載Macで オラクルは、Appleシリコン搭載のMacでmacOS Sonoma 14.4にアップデートを行うと、Java 8以降のすべてのバージョンでJavaが予期せず終了する現象が発生するとして、Macユーザーに注意喚起を行っています。 今のところ回避策はなく、macOSをバージョンアップしてしまうと元に戻す簡単な方法もないため、Appleシリコン搭載のマシンでJavaを利用している開発者やユーザーは、この問題が解決するまでは最新のmacOSへの移行を延期することをオラクルは勧めています。 Javaが正常に動作しないことで、Javaに依存しているツールもmacOS Sonoma 14.4では動作しなくなります。Kotlinの開発元などで知られるJetBrainsは、J
オラクルはJavaをサーバレス環境で実行するのに最適化した技術「GraalOS」を発表しました。 同時に、Oracle Cloudのサーバレス実行基盤である「Oracle Cloud Functions」でGraalOSの機能を提供することも発表されました。 Javaをコンパイルし、ネイティブバイナリを実行 GraalOSは名称にOSと付いているものの、LinuxやWindowsのようなOSではなく、Javaをデプロイする新たな技術とその基盤を指します。 具体的には、同社が提供しているJava実行環境である「GraalVM」のコンパイラを用いてJavaをコンパイルしてネイティブバイナリを生成し、それをサーバレス基盤にデプロイし実行することで、サーバレスアプリケーションの瞬時の起動と高速な実行などを実現するというものです。 参考:Javaのネイティブバイナリ生成可能なGraalVMの全機能が
谷本 心 EverforthとAcroquestの2社で正社員として働くエンジニア。仕事のかたわらでコミュニティ活動も行っており、日本Javaユーザーグループの代表を務めるほか、アメリカで開催されたJavaOneやSpringOneなど国内外のイベントで登壇。その実績から日本で3人目の「Java Champion」に任命された。著書に『Java本格入門』(技術評論社)。趣味は対戦格闘ゲームと、BABYMETALを追いかけて世界中を旅すること。 X: @cero_t Blog: https://cero-t.hatenadiary.jp/ 1. 『Java本格入門~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで』(谷本心、阪本雄一郎、岡田拓也、秋葉誠、村田賢一郎 著) 2. 『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』(きしだなおき
オラクル、Java開発を効率化するVSCode用拡張機能「Oracle Java Platform Extension for Visual Studio Code」を公開 New Oracle open source project released! Oracle Java Platform extension brings full featured @Java development (edit-compile-debug & test cycle) for Maven and Gradle projects to VS Code. Get started: https://t.co/knjeFPRY1Q Learn more: https://t.co/77SIeky3cE#OracleOSS pic.twitter.com/whXIKFsBHV — Oracle Open So
「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能 オラクルはJavaの最新バージョン「Java 21」正式版を今日リリースします。 Java 21は長期でセキュリティパッチやバグフィクスなどが提供されるLTS(Long Term Support:長期サポート)版です。企業向けのシステム開発などで安定したJavaのバージョンをある程度長期間使いたい場合には、このJava 21は有力な候補となるでしょう。 日本時間22時からJava 21のローンチイベントも開催予定です。「with a few surprise reveals」(いくつかサプライズ発表があるよ)というのが少し気になります。今年は昨年復活したJavaOneがないので、その代わりに何かあるのでしょうか。 We're just 1 day away fro
はじめに Java の enum は大変便利で非常多くのシーンで活用されています。例えば区分を表すようなオブジェクトを表現したい際にもよく使われていますね。 Java 14 で正式機能となった switch式にて網羅性検査が行えるようになり、それまで以前ではどうしても抽象メソッド等を活用する必要があった処理についても、switch式を利用する事で簡潔に表現することができるようになりました。 また、Java 17 で正式機能となった sealed classes/interfaces と Java 21 で正式機能になった Record Patterns によって、これまで必要だった区分値のような enum を必ずしも定義しなくて良い場合も出てきました。 この記事では、今まで enum を使っていたコードがこれらの機能によってどのように変わるのかを紹介し、盲目的に enum を定義するのでは
図1:データベースとJavaプログラミング言語のミスマッチ このギャップを埋め、Javaアプリケーションとデータベースのシームレスな接続を実現するために、私たちはさまざまなデザインパターンとアーキテクチャアプローチに依存している。これらのパターンはトランスレータとして機能し、インピーダンスのミスマッチの影響を軽減し、2つの世界を調和して動作させるのに役立つ。 これらのデザインパターンは、車輪の再発明ではない。これらは、アプリケーションとデータベースのパラダイム間のインピーダンスのミスマッチを緩和するのに有効であることが証明されている、確立されたソリューションである。Driverパターン、Mapperパターン、Active Recordパターン、Repositoryパターンなどがある。 Java Persistenceにおけるデータパターンのナビゲート このセクションでは、アプリケーション開
ITシステムを効率良く開発するには、実装する機能に合わせたプログラミング言語の選定が重要になる。現在、多種多様なプログラミング言語が存在するが、言語によって実装しやすい機能が異なるためだ。 システムの機能が多岐にわたる中、日経クロステックの読者はどのような言語を利用しているのか。これを確かめるため、日経クロステックではアンケート調査「プログラミング言語利用実態調査2023」を実施した。調査期間は2023年9月21日~10月18日。358人から回答を得た。 Pythonが首位をキープ アンケートではまず、現在使っているプログラミング言語を3つまで挙げてもらった。利用言語の第1位は「Python」だった。回答者358人うち45.3%の162人が使っているという結果だった。 「あなたが現在使っているプログラミング言語は何ですか」という設問に対する回答の内訳。最大3つ選択してもらった。グラフには回
TIOBE Softwareが発表したプログラミング言語の人気ランキング「TIOBEインデックス」の2023月10月版では、JavaとC#のレーティングが1.2ポイントのわずかな差に縮まっている。 ソフトウェア品質の評価と追跡を手掛けるTIOBE Softwareは、2023年10月版の「TIOBEプログラミングコミュニティーインデックス」(通称「TIOBEインデックス」)を発表した。 TIOBEインデックスはプログラミング言語の人気度を示すランキングで、同社が毎月更新している。2023年10月のランキングでは「Python」が14.82%で首位を維持した。2位~5位は「C」(12.08%)、「C++」(10.67%)、「Java」(8.92%)、「C#」(7.71%)だった。 Python、C、C#は、それぞれ長期にわたって首位、2位、5位を占めている。C++は6月にJavaを抜いて3位
世界 30 億の Java エンジニア向けに、Java 言語仕様・JVM仕様のバージョンごとの差分を見れるページを作りました。 The Java Language Specification diffs The Java Virtual Machine Specification diffs ぜひご利用ください! なにこれ? Java の各バージョンごとの言語仕様・JVM仕様はこちらのページで公開されています。 Java Language and Virtual Machine Specifications ただ、バージョンごとの変更点がありませんでした1。 そこで、各ページからテキストを抜き出して2、GitHub 上で差分が見れるようにしました。 更新について 細かい誤字脱字の変更とかを除いた差分が作れるとより良いのですが、そうすると今後の更新に手間がかかってしまいまそうでした。 それよ
ITジャーナリスト/Publickeyブロガー。IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。 GitHubは、脆弱性のあるコードをAIボットが自動的に発見、修正したコードとその解説をプルリクエストしてくれる「code scanning autofix」(コードスキャン自動修正機能)を発表しました。 下記がそのコードスキャン自動修正機能の説明です。「Found means fixed: Introducing code scanning autofix, powered by GitHub Copilot and CodeQL」から引用します。 Powered by GitHub Copilot and CodeQL, code scanning autofix covers more than 90% of alert types
「今後、COBOL技術者の減少は明らかだ。このタイミングで刷新できなければ機会を逸してしまう」。こう話すのは、伊藤忠食品の波元英夫情報システム本部本部長だ。酒類・食品卸売業などを手掛ける同社は富士通製汎用機の撤廃を目指し、汎用機で稼働しているCOBOLアプリケーションをJavaなどに刷新中だ。 汎用機では、主に会計・営業・物流といったシステムが稼働している。伊藤忠食品は、刷新プロジェクトの第1弾として、2023年8月に会計システムのマイグレーションを完了した。2026年春に残りのシステムを更新し、汎用機の撤廃を狙う。 機能変更が少ない会計システムから移行 伊藤忠食品に汎用機が導入されたのは1969年5月に遡る。以後、社内の技術者が中心となって更改や改修を重ねてきた。しかしCOBOL技術者の減少により改修・運用が困難になることや、運用コストが高いことなどから「2012年あたりから脱COBOL
Java users on macOS 14 running on Apple silicon systems should consider delaying the macOS 14.4 update An issue introduced by macOS 14.4, which causes Java process to terminate unexpectedly, is affecting all Java versions from Java 8 to the early access builds of JDK 22. There is no workaround available, and since there is no easy way to revert a macOS update, affected users might be unable to ret
NTTコミュニケーションズ(NTTコム)は2024年4月9日、暗号化されたJavaアプレット領域の一部を顧客に開放したSIMカードの本格提供を始めたと発表した。顧客企業が同領域に決済情報・個人情報・設定情報などを安全に格納できるようにし、IoT(インターネット・オブ・シングズ)などのサービスを展開しやすくする。価格は個別見積もりだが、SIMカード1枚当たり月額100円程度から、管理コンソール機能は同1万5000円程度からを見込む。 同社が「アプレット領域分割技術」と呼ぶ技術により、SIMカード内にあるJavaアプレット領域のうち約300キロバイトを切り出し、顧客企業が独自に暗号鍵を管理して利用可能にした。SIMカード上のCPUやメモリー、OSなどと組み合わせて、認証などのアプリケーションを実行できる。同技術による領域の切り出しはSIMカードの製造時に書き込むソフトウエアにより実現しており、
1959年に開発されたプログラミング言語「COBOL」は、自然言語に近いコマンド構文が採用されていることから、金額計算などの事務処理用に広く使われてきました。一方でCOBOLは「非効率的な言語」と指摘されることがあります。2023年8月22日にIBMが発表した「Watsonx Code Assistant for Z」では、コード生成AIモデルを使用してCOBOL言語で書かれたコードをJavaに変換することが可能です。 IBM Unveils watsonx Generative AI Capabilities to Accelerate Mainframe Application Modernization https://newsroom.ibm.com/2023-08-22-IBM-Unveils-watsonx-Generative-AI-Capabilities-to-Accel
Kapper@Linuxガジェヲタ&異世界小説家&電子工作大好き @kapper1224 1ファイルでインストール不要で実行出来る生成AI推論のLLamafileをコマンドラインからVirtualBox+NetBSD10RCで動作確認。すげーなこれ。*BSDでもLinuxでも完璧。 SSE3必須だからQemuとかはエラーが出るから注意。 だれかPkgsrc-WIPに入れて下さい・・・ pic.twitter.com/kstDUa2IQK 2023-12-10 08:18:43 Kapper@Linuxガジェヲタ&異世界小説家&電子工作大好き @kapper1224 llamafileはここからダウンロードして実行するだけ chmod +x mistral-7b-instruct-v0.1-Q4_K_M-main.llamafile ./mistral-7b-instruct-v0.1-Q4
昨晩、電源周りの確認をしてみた記事をあげました。 www.raspi.jp で、この記事の環境でなんか動かそうとすると何が楽しいかなってことで、Minecraft Java Editionサーバーを動かしてみました。 構成は上記ブログのとおりですが念のためこちらにも。Ethernetが200Mbpsくらいのしばりプレイですが、まあ多分大丈夫なんじゃないでしょうか。 軽めにテストということで、ストレージはMicroSD、冷却はヒートシンク抜きのファンのみという雑構成でチャレンジです。 用意 Minecraft JEサーバーを拾ってきます。 www.minecraft.net OpenJDK 17 JREをインストール $ sudo apt install openjdk-17-jre~/minecraftとかディレクトリを掘ってserver.jarを放り込み、そこでjarを実行します。8GB
はじめに # Java デベロッパーの皆さんは IntelliJ IDEA や Eclipse を使ってる方が多いのではないでしょうか。筆者は VS Code を使っています。業務では長らく Java から離れていたのですが、ここ数年はけっこう書いています。かつては IntelliJ IDEA に課金してましたが Java 再開を機に VS Code の環境を整えました。この記事では、定番の拡張やワークスペースの使い方についてご紹介したいと思います。 Microsoft Extension Pack for Java の利用 # 結論から言うと 「Microsoft の Extension Pack for Java を入れましょう。」で終わりです。 Extension Pack for Java - Visual Studio Marketplace Extension Pack はその
「Java 22」正式リリース。無名変数と無名パターン、複数のソースコードからなるJavaを一発実行する新機能など。「void main()」な記述もセカンドプレビューへ オラクルはJavaの最新バージョン「Java 22」正式版をリリースしました。 Java 22 is now available! #Java22 #JDK22 #OpenJDK Download Now: https://t.co/aCramdGK3b Release notes: https://t.co/UIHZ8nwZNu API Javadoc: https://t.co/RBVjNl6Qpm Features: https://t.co/DNvcj2yYbo Inside Java on JDK22: https://t.co/Wh9qOLeL2N pic.twitter.com/nrKfgbqx7X — J
日本におけるJavaの普及に、多大なる貢献をした人物がいます。その方とは、日本人で2人目のJava Championである寺田佳央(@yoshioterada)さん。寺田さんは、これまで複数の企業でJavaやその関連製品のエバンジェリストを務め、日本におけるJavaの利用促進・啓蒙活動に従事してきました。 約25年にわたり、Javaと向き合ってきたキャリア。活動を継続できた理由は何にあったのでしょうか。今回は寺田さんにその歩みを振り返っていただきました。 それはiPhoneやKubernetesの登場にも等しい衝撃だった 今いるのが自分の望んだ場所ではなくても、その経験はいつか役に立つ オラクルによる買収後、初の登壇は本当に恐ろしかった オラクルで初めてのJavaOne Tokyo 2012 コミュニティに所属することでキャリアはより豊かになる それはiPhoneやKubernetesの登
OpenXavaという、JPAエンティティだけ定義すればCRUDな画面を作ってくれるローコードフレームワークがあるので、試してみました。 Javaわかる人には手軽に使えてよさそう。 https://www.openxava.org/ OpenXavaプロジェクトの作成 Maven Archetypeが用意されているので、こんな感じのMavenコマンドで始めれます。 mvn archetype:generate -DarchetypeGroupId=org.openxava -DarchetypeArtifactId=openxava-archetype -DarchetypeVersion=RELEASE -DgroupId=com.yourcompany -DartifactId=invoicing -DinteractiveMode=false しかし、Mavenコマンドを入力するのは
JJUG CCC 2023 Fall で発表された内容です。 Java21ではパターンマッチがswitch式で正式に使えるようになります。 https://openjdk.org/jeps/441 これらの変更により型の検査がより強化されて、より実行時例外がすくなくコンパイル時に多くの実装ミスが検出できるようになります。 本セッションではJava21のパターンマッチに関する新機能にふれつつ、先んじて導入しているKotlinとの比較や、実際のプロジェクトでどのように活用するべきかについて話します。 型を使って実際に実装ミスをコンパイルフェーズで発見していくという内容は過去にKotlin Fest 2022で筆者が発表しており、今回はよりJava21の新機能とパターンマッチに着目して解説していく予定です。 https://jjug.doorkeeper.jp/events/164154
プログラミング言語ごとのコミュニティの最大規模はJavaScriptの約2520万人、続いてPythonが1820万人、Javaが1770万人など。SlashDataの調査 ソフトウェアデベロッパーを中心とした調査会社のSlashDataは6月15日、2024年第1四半期時点のプログラミング言語ごとのコミュニティの大きさについてのレポートを発表しました。 これは同社が行った世界135カ国から1万人以上の回答者を集めたアンケート結果などを基に同社が推測しレポートとして発表する予定の内容の一部を公開したものです。 下記は同社が発表したプログラミング言語別のコミュニティを大きさ順に示した図の一部を切り取ったものです。 これによると、最大のコミュニティを持つプログラミング言語はJavaScriptで2520万人。もっともポピュラーな用途はWeb開発となっています。ただしこの人数にはTypeScri
企業の情報システムには、高い信頼性や可用性が求められる。このためシステムの構築にはそれらを実現できるプログラミング言語を使う必要がある。 そうした用途でかつてよく使われていた言語が「COBOL」だ。Common Business Oriented Languageの略で、日本語では「共通事務処理用言語」という意味になる。エンジニアではない事務員がプログラミングできることを目指して開発された。自然言語である英語に近い構文で記述でき、可読性が高いのが特徴だ。 過去にCOBOLは金融機関のオンラインシステム構築などで大きな役割を果たした。現在でも、一般ユーザーの目に触れないところで動いているCOBOLシステムは多い。 ただしCOBOLは幾つかの問題を抱えていた。最も大きな問題は、稼働基盤が事実上、メインフレームに限られることだ。オープンシステムやクラウドでCOBOLプログラムが動作する環境もある
Javaは、企業のITシステムの開発になくてはならないプログラミング言語としての地位を確立している。一方で、PythonやJavaScriptといった若い世代に人気がある言語と比較すると、煩雑な記法が多く堅苦しいイメージは否めない。 こうしたイメージを一新してJavaの生産性を高める試みが「Project Amber(プロジェクト・アンバー)」だ。同プロジェクトではこれまで、Javaプログラムの可読性を高めるために数々の記法の改良を行ってきた。 その成果の1つとして、2023年秋に公開予定の「JDK(Java Development Kit) 21」に導入されるのが、Javaプログラムの実行の起点である「mainメソッド」の大幅な簡略化だ。Javaの新機能は「JEP(JDK拡張提案)」として管理されており、mainメソッドの簡略化は「JEP 445」で規定されている。 Javaの開発にかか
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く