はじめに こんにちは。私は弊社で企画・運営している、Dot to Dotという個人の同意の元に様々なデータを連携することができる分散型データ連携プラットフォームの開発・保守を担当しています。 Dot to Dotではデータ連携をしたい事業者向けに、データ連携用の通信モジュールを、Spring Bootを使用したJavaアプリケーションとして作成したDockerイメージ形式で配布しています。 昨今ではDockerでアプリケーションを実行するのが当たり前の風潮になりつつありますが、実際に本番で適用する際に必要なチューニングの話はあまり聞かないかと思います。 そこで本記事では、JavaアプリケーションをDockerコンテナで運用する場合に必要な、ヒープのチューニングについて説明します。これからJavaアプリケーションをDockerコンテナ化して運用したい人や、すでに運用中でもヒープチューニングし
Datadogは2024年4月17日(現地時間)に、「State of DevSecOps 2024」と題された分析レポートを公開した。同レポートは、数千のアプリケーションやコンテナイメージ、クラウド環境のセキュリティ評価をまとめたものだ。 Javaは他のプログラミング言語と比較してどのくらいリスクがあるのか? 同レポートによって、Javaアプリケーションは他のプログラミング言語に比べてサードパーティーの脆弱(ぜいじゃく)性の影響を受けやすいことや自動セキュリティスキャナーによって実行されるサイバー攻撃の大部分は無害であることなどが明らかになった。 Datadogが発表したレポートの概要は以下の通りだ。 Javaアプリケーションは、サードパーティーの脆弱性の影響を最も受けている。Javaサービスの90%がサードパーティーのライブラリーによってもたらされた1つ以上の重大または深刻度の高い脆弱
This web framework, "Minum", provides an all-in-one minimalist foundation for a highly-maintainable single-binary web application. For TDD, by TDD. Has its own web server, endpoint routing, logging, templating engine, html parser, assertions framework, and database Around 100% test coverage that runs in 30 seconds without any special setup (make test_coverage) Nearly 100% mutation test strength us
AWS Compute Blog Re-platforming Java applications using the updated AWS Serverless Java Container This post is written by Dennis Kieselhorst, Principal Solutions Architect. The combination of portability, efficiency, community, and breadth of features has made Java a popular choice for businesses to build their applications for over 25 years. The introduction of serverless functions, pioneered by
Introduction This article focuses on tasks that application programmers are likely to encounter, particularly in web applications, such as: Reading and writing text files Reading text, images, JSON from the web Visiting files in a directory Reading a ZIP file Creating a temporary file or directory The Java API supports many other tasks, which are explained in detail in the Java I/O API tutorial. T
この記事は GMOアドマーケティング Advent Calendar 2023 15日目の記事です。 GMOアドマーケティングのT.Nです。 最近弊社の一部のプロダクトのJavaを、Java 21にバージョンアップしました。 Java 21でリリースされたSequenced Collectionsのreversedが気になったので、 実装について調べてみました。 Sequenced Collectionsとは まずはSequenced Collectionsについてです。 JEP 431(https://openjdk.org/jeps/431)で以下のインターフェースが新しく追加されました。 SequencedCollection SequencedSet SequencedMap IntelliJのDiagramsでクラス図を生成し、以前のバージョンと比較しました。 左がJava 21
というブログを書こうとしたら、すでにあった。 Dependency Injectionでやりたいことはモジュールimport - きしだのHatena 依存性の注入って要するにimportなので。 まず、DIコンテナを実装してみるとどういうものかがわかりやすくなります。 このときの結論はこんな感じ。 DIコンテナというのは、Javaのリフレクションやバイトコード操作、ThreadLocalといった、あまり美しくない部分を覆い隠してきれいなコードでアプリケーションを構築するための仕組み 作って理解するDIコンテナ - きしだのHatena 言語機能の補完なので、他の言語で同様に便利とは限らないわけですね。 わかりやすい例として、DIコンテナの現実的に便利なのはAOPを利用した宣言的トランザクションやログです。これはAspectJのように言語機能としてAOPが用意されていれば不要になります。
検索エンジンプロダクトを一緒に開発してた同窓会 Advent Calendar 2023 の9日目です。 Javaアプリケーションの起動を高速化する技術として、Application CDSやGraalVM Native ImageによるAOTコンパイルなどがあります。 CRaC(Coordinated Restore at Checkpoint) もまた、Javaアプリケーションの起動高速化を目的としたOpenJDKのプロジェクトです。CRaCはLinuxのCRIUを利用し、実行中のJavaアプリケーションの状態をスナップショットとして保存します。スナップショットからはアプリケーションを高速に復元することができます。 今回はSpring Bootアプリケーションのスナップショットを作成し、スナップショットからアプリケーションを起動してみます。 CRaCをサポートするJDKのインストール
Transcript Bakker: I'm going to talk about how Netflix is really using Java. You probably know that Netflix is really just about RxJava microservices, with Hystrix and Spring Cloud. Really, Chaos Monkeys are just running the show. I'm only half getting here because a few years ago, this was actually mostly true, maybe except the Chaos Monkeys. This stack was something that we were building on in t
近年、異なるプログラミング言語を組み合わせて開発を行う手法が増加しています。その中でもPythonとJavaの連携は、高い生産性と安定性、クロスプラットフォーム性を組み合わせた強力な開発手段として注目されています。本記事では、PythonとJavaを連携させるための手法や実際のコーディング例を通じて、そのメリットや技術的なポイントについて詳しく解説します。 Python と Java の連携の背景 Pythonはそのシンプルな文法と豊富なライブラリにより、開発者に高い生産性をもたらしています。一方でJavaはその堅牢性、安定性、クロスプラットフォーム性から企業システムや大規模プロジェクトに広く利用されています。PythonとJavaを連携させることで、開発者は両者の利点を最大限に活かし、柔軟かつ効率的な開発が可能となります。 Python から Java へのデータの受け渡し Python
関連キーワード Java | 統合開発ツール | プログラマー | プログラミング プログラミング言語・実行環境「Java」は、企業のシステム開発で根強い人気を保っている。Javaエンジニアとして活躍する上で欠かせないスキルに関する知識を問う、一見シンプルな質問が以下にある。これはシンプルに見えるが、意外と奥が深い。 Java向け統合開発環境(IDE)「Eclipse IDE」で図のコードスニペット(短いソースコードのまとまり)を表示した場合、赤い「×」印が何を表すのかを簡潔に説明してください。 図 Javaのコードスニペット この質問に対する“正しい答え”を考えてみよう。 トリッキーなJavaの質問に答えるには 併せて読みたいお薦め記事 エンジニアは何を学ぶべきか エンジニアで“年収1500万円プレーヤー”になれる「資格」はこれだ 「知ったかぶりのエンジニア」にならないための学習方法はこ
こんにちは、プログラミング愛好者の皆さん。今回はC言語とJavaを連携させ、異なる言語間でのシームレスなデータのやり取りや機能の組み合わせを実現する方法に焦点を当ててみたいと思います。C言語とJavaは異なる特徴を持つ言語ですが、その組み合わせにより、パワフルなクロスプラットフォーム開発が可能です。 1. C言語からJavaを呼び出す まずは、C言語からJavaのメソッドを呼び出す例を見てみましょう。JNI(Java Native Interface)を使用して、C言語からJavaのメソッドを呼び出すことができます。 C言語のコード (example.c) #include <stdio.h> #include <jni.h> void callJavaMethod() { // Java仮想マシンの初期化 JavaVM *jvm; JNIEnv *env; JavaVMInitArgs
日本IBMは「IT変革のためのAIソリューション」として、システム構築プロセス全体における生成AI(人工知能)の活用を進めている。今回は、コード生成およびテスト自動化における生成AIの活用方法について見ていく。 生成AIによるコード生成は、特に既存システムのモダナイゼーションで威力を発揮する。代表的なのが基幹システムなどにおけるCOBOLプログラムのJavaへの変換だ。日本IBMの二上哲也執行役員IBMフェローコンサルティング事業本部最高技術責任者(CTO)は、「COBOLで記述された既存のソースコードを生成AIで仕様書に書き起こす案件を現在多く請け負っている」と話す。長年のノウハウの蓄積により、「ソースコードはあるが仕様が分からない」といった状況を生成AIにより短時間で解決できる可能性が出てきた。 日本IBMの谷松清孝コンサルティング事業本部ハイブリッド・クラウド・サービスアソシエイト・
On 2022-06-07 Jigar Kumar wrote: > Progress will not happen until there is new maintainer. XZ for C has > sparse commit log too. Dennis you are better off waiting until new > maintainer happens or fork yourself. Submitting patches here has no > purpose these days. The current maintainer lost interest or doesn't > care to maintain anymore. It is sad to see for a repo like this.I haven't lost intere
米Amazon Web Services(アマゾン・ウェブ・サービス、AWS)は、同社のクラウドサービスAWSの開発者向けに、生成AI(人工知能)アシスタント「Amazon Q」による支援を展開する。開発者の中には、AWSの生成AI基盤「Amazon Bedrock」を活用し、大規模言語モデル(LLM)を使った開発や運用を効率化するツールを自ら構築する動きもある。 開発者向けの生成AIアシスタント「Amazon Q Developer」は、インフラ設計からプログラミング、システムの運用までを一貫して支援する。AWSジャパンの岡本京エンタープライズ技術本部ハイテク・製造・自動車産業グループ本部長は、「プログラミング以外の開発工程にボトルネックがある場合も多いため、ライフサイクル全体を生成AIで支援する」と話す。 Amazon Q Developerの裏側で動くLLMは非公開だ。岡本本部長は、
Javaは企業のITシステム構築では盤石ともいえる地位を確立している、一方、プログラミングを一から学び始める初心者は、プログラミング言語としてJavaよりもPythonを選ぶことのほうが多い。 理由は幾つかある。まず、Pythonは近年大きな注目を集めているAI(人工知能)の開発に使われることが多い点だ。Pythonを学べば、こうした最先端の用途に利用できる。一方、JavaはAIの開発にはほとんど使われていない。 もう1つの理由が、JavaよりもPythonのほうが学び始めるハードルが低い点だ。簡単なサンプルプログラム「Hello world」の例で見てみよう。単純な文字列を表示するプログラムだ。 PythonのHello worldは「print("hello, world\n")」というたった1行のプログラムである。他の言語でもHello worldは簡潔に書けることが多い。 例えば、
ブラウザが動けば貧弱なパソコンやタブレットでも開発ができるGitHub Codespacesで、Javaを試してSpring Bootを試してデータベースを試すという三部作、まとめておきます。 「プロになるJava」の補足という感じで書いてますが、GitHub Codespacesがどんな感じか試すのにもいいのではないかと。 GitHub CodespacesでJava開発を始める - きしだのHatena GitHub CodespacesでSpring Bootの開発を始める - きしだのHatena SQLのJOINとGROUP BYを試す - きしだのHatena プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山本 裕介,杉山 貴章技術評論社Amazon
シンクロナイザとは 自身の状態を使ってスレッドの進行を制御(調停)するオブジェクトのことをシンクロナイザ (synchronizer) と呼ぶ。 例えば、次のような実装があったとする。 package synchronizer; import java.util.concurrent.TimeUnit; public class SynchronizerTest { public static void main(String[] args) { runThread(() -> { System.out.println("Thread 1 start"); System.out.println("Thread 1 end"); }); runThread(() -> { System.out.println("Thread 2 start"); System.out.println("Th
Javaは、COBOLに代わる「システム開発のデファクトスタンダード」として確固たる地位を確立した。一方で、イメージの悪さや設計の古さといった問題も抱える。Javaの現状と最近の改良点、賢い使い方などをまとめる。 第4回 突然の高額ライセンス料請求のワナ、企業がJavaを賢く利用するには Javaプログラムの開発・実行に欠かせないのが、JDK(Java Development Kit)だ。現在、様々なベンダーがJDKを提供している。しかしJDKごとにサポート期間や料金が異なる。適切なJDKを選択しなければ、高額なライセンス料の請求につながりかねない。 2024.05.10 第3回 「AI分野に弱い」との汚名返上なるか、Javaで着々と進む機能強化 システム開発で確固たる地位を築いたJavaだが、AI(人工知能)やデータ分析といったはやりの分野で後れを取っている。ただしJavaも手をこまぬい
MyJVNバージョンチェッカで最新バージョンのソフトウェアをチェックする 概要 Oracle 社から Java SE に関する脆弱性が公表されています。 同社からは攻撃された場合の影響が大きい脆弱性であることがアナウンスされているため、できるだけ早急に修正プログラムを適用してください。 対象 サポートされている以下の Oracle 製品が対象です。 Oracle Java SE 20.0.2 Oracle Java SE 17.0.8 Oracle Java SE 11.0.20 Oracle Java SE 8 Update 381-perf Oracle Java SE 8 Update 381 対策 脆弱性の解消 - 修正プログラムの適用 - Oracle 社から提供されている最新版に更新してください。 Java のアップデート方法 次のウェブサイトにアクセスし、Java の最新バー
◆ Java 前回で「ラムダ式」の基本について学習しました。 「関数型インタフェース」を用意して、その実装を書いて、それを呼び出すという形ですが、ラムダ式で記述すると、メソッド名も何でもよく、必要なのはインタフェースに渡す引数の型のみ。 そう考えると、「関数型インタフェース」は、「引数の数と型、戻り値の型」があっていれば何でも良いということになります。 そのためか、Java SEでは、よく使うだろう一般的なパターンの関数型インタフェースが用意されています。 ★ Runnable インタフェース Runnable (Java Platform SE 8) 抽象メソッド: run( ) 引数:なし 戻り値:なし (void) ★ Consumer インタフェース Consumer (Java Platform SE 8) 抽象メソッド: accept (T t) 引数:1つ 戻り値:なし (v
1 Java Project Manager (1JPM), is a Maven/Gradle alternative with a twist. It's a single Java file itself, which should be edited by you to configure your project. Meaning instead of writing XML (Maven) or Groovy (Gradle), your build file is Java code too. Thus to build your project, download/copy the JPM.java file into your project, open a terminal and execute: Java 11 and above: java JPM.java ja
「生成AI(人工知能)への期待がレガシーマイグレーションの相談件数増加につながっているのではないか」――。こう推測するのは、日立製作所の秋庭真一アプリケーションサービス事業部シニアテクノロジーマネージャだ。生成AIを活用すれば、レガシーマイグレーション(レガマイ)を素早く実現できる。このように考えるユーザー企業が増えているという見立てだ。2023年度に寄せられたレガマイの相談件数は、2022年度に比べて1.5~2倍に増えたという。 現在、開発工程に生成AIを活用しようとする動きが活発だ。例えば生成AIを用いたコーディング支援ツールなどの活用が挙げられる。ツールでコーディング速度を向上させたといった話をよく聞くようになった。生成AIでレガマイをどう支援できるのか探っていこう。 COBOLからピュアJavaへの変換も 一般にCOBOLをピュアJavaに変換するリビルドは、プログラムの構造を変更
関連キーワード Java | JavaScript | プログラミング 「Kotlin」(コトリン)は、メインフレームアプリケーションからモバイルアプリケーションまで幅広く開発に使えるプログラミング言語だ。近年はKotlinをプログラミング言語「Java」と併用する、もしくはJavaの代替としてKotlinを採用するという動きが広がりつつある。Javaではなく、Kotlinが人気を集める理由はどこにあるのか。開発者がKotlinを好む理由を5つに分けて紹介する。 開発者がJavaより「Kotlin」を好む5つの理由 併せて読みたいお薦め記事 プログラミング言語に関するトピック なぜ今こそ「Java」なのか? 使いやすい言語な訳 「Haskell」は何ができるプログラミング言語? 4つの特徴とは 1.Javaとの互換性 KotlinはJavaをベースにしている。開発者はJavaのコーディング
AppleがUSBハブが認識されなくなる不具合やオーディオプラグインやJavaを利用したアプリがクラッシュする不具合、複数の脆弱性を修正した「macOS 14.4.1 Sonoma」を正式にリリースしています。詳細は以下から。 Appleは現地時間2024年03月25日、複数の不具合と脆弱性を修正したmacOS 14.4のHotfixとなる「macOS 14.4.1 Sonoma Build 23E224」をリリースしています。 このアップデートには以下のようなMac用のバグ修正が含まれます: 外部ディスプレイに接続されたUSBハブが認識されないことがある問題 プロフェッショナル向けの音楽制作アプリ用に設計されたコピー保護済みのAudio Unitプラグインが開かない、または検証がパスしないことがある問題 Javaを含むアプリが突然終了することがある問題 リリースノートより Appleが2
There are a few notable releases here. Java 14 stabilised switch expressions, 16 records and instanceof pattern matching, 17 sealed classes, and now, 21 will stabilise record patterns and switch pattern matching. This set of changes allows Java to express one of the foundations of functional programming that the language never could before - Algebraic data types, along with idiomatic ways of using
はじめに エンジニア歴約5年程なのですが、心配性な性格のおかげ(?)で過去やらかした記憶があまりありません。 ※もしかしたら記憶から抹消しただけかもしれない。 そんな私が唯一記憶に残っている、若干やらかしエピソードを記事に残そうと思います。 誰でも失敗は経験してるんだよ〜ということで、特に新人の方に読んでいただけたら嬉しいです。 ○○不足でへなちょこプログラムを作成した - 新入社員研修まで遡る かれこれ約6年前、新卒で入ったIT企業の新入社員研修のときです。 文系出身で情報系の知識はまっさらの状態でしたが、未知の世界にどっぷりハマり研修も楽しく過ごせました 特に研修最終段階で実施した、Javaのじゃんけんプログラム作成はボリュームが多かった分、有意義な時間でした。 研修外の時間は稼働をつけられませんでしたが、なんとしてでも良いプログラムを作りたい一心で、当時フォロー役として新人と一緒に研
◆ Java 前回、無名クラス(匿名クラス)を使った実装をしてみました。 ◆ IPrintOut.java (インタフェース) public interface IPrintOut { void print(String str); } ◆ 実装クラス IPrintOut ipo = new IPrintOut() { @Override public void print(String str){ System.out.println("Call IPrintOut.print(). :" + str); } }; ipo.print("test!"); 無名クラス(匿名クラス)とはどんなものかがわかった状態で、次は「関数型インタフェース」について。 ◆ 関数型インタフェース 関数型インタフェースとは、 抽象メソッドを1つだけもっているもの を指すようです。 つまり、複数の抽象メソッドを
Twitterでこれ↓が流れてきて、あれーあのクラスは無いんだー、まぁ最低限と言われると違うかもなー。と思うのがあったので便乗。 nowokay.hatenablog.com java.util.Objects recordの導入で不要になってきたメソッドも多いが、引数の検証などでまだ出番がある。防御的な書き方を簡単にしてくれるのでおすすめ。 java.util.Scanner 標準入力を受け取ってゴニョゴニョするツールを書くのに便利。競技プログラミング御用達。 java.util.concurrent.Executors スケジュール実行とか、スレッドを立ち上げてなんかするとか、そういうときに役立つ。 java.util.concurrent.CompletableFuture JavaにPromiseって無いんですか、と言われたらCompletableFuture があるよ!と返してま
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く