JAVA関連のことを調べてみた

JAVA関連のことを調べてみた
目次

vbaコードフォマード

javacode
“`
import com.google.googlejavaformat.java.Formatter;
import com.google.googlejavaformat.java.FormatterException;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class VbaCodeFormatter {

public static void main(String[] args) {
// 指定VBA代码文件路径
String vbaCodeFilePath = “path/to/your/vba/code/file.vba”;

try {
// 读取VBA代码文件内容

元記事を表示

VSCodeでOpen LibertyプロジェクトをAntからMavenに

VSCodeでOpen LibertyプロジェクトをAntビルドからMavenビルドに変更した際の大まかな手順と個人的につまずいた点をまとめました。

# Maven 基礎知識
こちらについては、詳細は別サイトや書籍などでご確認ください。ライブラリをpom.xmlに記述することで管理し、ビルド時に[Maven セントラルリポジトリ](https://mvnrepository.com/)から自動でダウンロードして使えるという点が最も大きな特徴と思われます。

# Maven移行の流れ
Mavenをインストール
環境変数「JAVA_HOME」に JDK のディレクトリのパス追加
環境変数「PATH」に Maven の実行ファイルのあるディレクトリを追加
インストールされたか確認
コマンドプロンプトでmvn –-versionを実行しバージョンが表示されるか確認
“`
$ mvn –version
“`
バージョン等の情報が表示されればインストール完了です。

# pom.xmlの記載
Packageの形式を指定します。今回はwarで作成しました。
“`pom.xml

元記事を表示

【環境構築】MacのC++でstdc++.hやちょっとだけ他言語と比較してみる

## ハマったこと
C++の`bits/stdc++.h`をincludeしたかった。
STLをひとつひとつincludeするのは面倒なので、全部入り神モジュールである`stdc++.h`を入れたい。

2つ必要なことがあった。
1️⃣ファイル本体が必要
2️⃣静的解析がエラーを吐く

環境はMacでvimです。

### 1️⃣ファイル本体が必要
ようはstdc++.hというファイルが、欲しいincludeを死ぬほど大量にincludeしまくってくれてるファイルということ。
だから、欲しいincludeを全部あらかじめincludeしておいたファイルを、1枚だけincludeすれば楽だよねっていうだけ。とくに魔法みたいなことはしてない。

`stdc++.h`はどこにあるか?
gccの最新を入れると一緒についてくる、gccを入れたくない場合は、ネット上に転がっているファイルを取ってくればいい。
または自分で好きにカスタムすればいい(多すぎるincludeを自前で用意したいならの話)

“`gccをいれる.sh
brew install gcc
“`

“`ここにあるはず.バージ

元記事を表示

Javaでコンストラクタを定義する方法

Javaでコンストラクタを定義する方法について説明します。コンストラクタは、クラスのインスタンス(オブジェクト)が生成されるときに自動的に呼び出される特別なメソッドです。コンストラクタは、オブジェクトの初期化に使用されます。以下に基本的なコンストラクタの定義方法を示します。

### コンストラクタの基本的な構造

1. **コンストラクタの名前**: コンストラクタの名前は、常にクラスの名前と完全に同じでなければなりません。
2. **戻り値を持たない**: コンストラクタは戻り値を持ちません。これは、コンストラクタが値を返す通常のメソッドとは異なる点です。
3. **アクセス修飾子**: コンストラクタは、`public`、`private`、`protected`、またはパッケージプライベート(修飾子なし)のいずれかのアクセスレベルを持つことができます。

### 簡単な例

Javaの`Person`クラスにコンストラクタを定義する例を以下に示します。

“`java
public class Person {
// メンバ変数(フィールド)
private

元記事を表示

オブジェクト指向プログラミングの三大要素

## カプセル化(Encapsulation)
オブジェクトのデータ(フィールド)とそれに関連するメソッドを一つの単位、つまりクラスに組み込むプロセスです。カプセル化は、オブジェクトの内部状態を外部から直接アクセスされることなく保護し、オブジェクトのデータとメソッドの詳細を隠蔽します。これにより、外部のコードがオブジェクトの内部状態に依存することが減り、より安全でメンテナンスしやすいコードを実現できます。

## 継承(Inheritance)
あるクラス(スーパークラスまたは親クラス)の特性(フィールドやメソッド)を別のクラス(サブクラスまたは子クラス)に引き継ぐことができる機能です。継承を使用すると、既存のコードを再利用して新しいクラスを作成できるため、コードの重複を減らし、拡張性と保守性を向上させることができます。

## 多様性(Polymorphism)
異なるクラスのオブジェクトが同じインターフェースやメソッドを通じて操作される能力です。これには主に2種類あります:

コンパイル時多様性(静的多様性): メソッドオーバーロードにより、同じ名前のメソッドが異なる引数を取ること

元記事を表示

Javaのデータ型

Javaでは主に二つのデータ型があります:プリミティブ型(Primitive Types)と参照型(Reference Types)。これらの型は、変数が保存するデータの種類とメモリ上での扱い方を定義します。

### プリミティブ型 (Primitive Types)
プリミティブ型は、Javaが提供する基本的なデータ型で、直接値を保持します。これらは比較的低レベルな操作に使用され、メモリ効率が良いです。

1. **整数型**
– `byte`: 8ビットの整数型。値の範囲は-128から127。
– `short`: 16ビットの整数型。値の範囲は-32,768から32,767。
– `int`: 32ビットの整数型。値の範囲は-2^31から2^31-1。Javaで最も一般的に使用される整数型。
– `long`: 64ビットの整数型。値の範囲は-2^63から2^63-1。

2. **浮動小数点型**
– `float`: 32ビットの浮動小数点型。小数点を含む数値に使用。
– `double`: 64ビットの浮動小数点型。`float`よりも

元記事を表示

Logging、ロギング

# Logging、ロギング
– オペレーティングシステムでは、System.out.println()のようなシステムコンソールを使用せず、別途のロギングライブラリを使用してログを出力する。
– ログを使えばThreadの情報、クラス名のような付加情報を一緒に見ることができ、出力の形を調整することができる。
– ログレベルを開発サーバーはdebug、ローカルではtrace、運営サーバーはinfoに設定できる。
– コンソールだけに出力するのではなく、ファイルやネットワークなど、ログを別の位置に残すことができる。 特にファイルとして残すときは、日替わり、特定の容量に応じてログを分割することも可能である。
“`java
private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class)

又は、lombok annotation(@Slf4j)を使用

元記事を表示

JavaでローカルLLMを動かすPart2: OpenAI API互換サーバをJHipsterで実装

この記事は、[Zenn記事](https://zenn.dev/hide212131/articles/4fbeca981db5f8)の転載です。

## はじめに
この記事は、[JavaでローカルLLMを動かす](https://zenn.dev/hide212131/articles/2916417bfa82f4)の続編です。

前回、JavaによるRESTサーバで経由でLLMへのアクセスに成功したので、今回は、OpenAI API互換プロトコルを実装したクライアントからも接続できるようにしてみます。

さらにJHipsterというツールを使い、少ない手順でRESTサーバを構築します。

最終的には、こんなかんじで、SpringBootサーバを起動し、[Chatbot UI](https://github.com/mckaywrigley/chatbot-ui)のようなクライアントから、サーバを経由し、ローカルLLMとのチャットができます。

![](https://storage.googleapis.com/zenn-user-upload/501f623370e8-20240

元記事を表示

JavaでローカルLLMを動かす(llama.cpp, Spring AI)

この記事は、[Zenn記事](https://zenn.dev/hide212131/articles/2916417bfa82f4)の転載です。

## はじめに:JavaとローカルLLM

生成AI、大規模言語モデル(LLM)が大流行りの一年でしたね。

LLMを扱うプログラミング言語としてはPythonでの情報が盛んでした。Pythonも素晴らしい言語ですが、今後LLMがエンタープライズシステムに導入されていくことを考えると、やはりJavaのエコシステムは外せないな、と思い、そうなるとJavaでどの程度LLMを使えるかな?が気になります。

また、OpenAIやAzure OpenAI Serviceを使用しない、オンプレミスで動く「ローカルLLM」という領域も興味があります。Javaが活躍している領域では、しばし、セキュアな環境での開発が求められ、LLMが導入しにくいという話も聞きます。そういった閉域でも導入しやすいというLLMで、どこまでできるかも試してみたいです。

加えて、Spring Framework界隈では、[Spring AI](https://docs.spri

元記事を表示

IT業界未経験からPHP⇒Python⇒Java⇒VBA、XMLと学習ロードマップをうろうろして感じたこと

自分の学習ロードマップのうろうろ歴

無事とある**PHP、Laravel**を中心とする半年のカリキュラムを課す民間のプログラミングスクールを修了し、転職フェアなどにも何回か参加してみたところ、「**実はプログラミング言語の需要には地域差がかなりある**」ということを知り(下記参照)、エッ…(゚Д゚)と思いながら、時代はAIだろ(´д`)と思って、**Python**をやってみたら少しは分かったけど、居住地域の関係で **Java**も併行し始めたけど、Pythonを使うかな(´。`)と思って内定をいただいた会社の自分の所属する部署では一番使うのは **VBA、XML** とのことで、今は急遽ExcelやVBAを触りまくっています。

①実は地域によってプログラミング言語に需要ニーズに違いがある。(-_-;)

〇転職活動を通して感じた地域の言語ニーズの差異に関する私見

(1)求人がどの地域も万遍なく一番多いのは**Java、意外と

元記事を表示

Java学習 変数

# 変数の違い
プログラミング言語によって変数の扱い方は異なり、「動的型付け言語」と「静的型付け言語」の2種類がある。
今まで学習してきたRubyは「動的型付け言語」で、Javaは「静的型付け言語」。

# データ型
データ型とは、変数に格納するデータの種類のこと。
「数値としての1」と「文字としての1」はプログラムの上では異なるものとして扱われます。

Javaでは変数を定義するときに、その変数をどのデータ型として扱うのかプログラムに伝えるため、使用前に「宣言」してから使用する。

## Javaの基本データ型は以下の8種類

|データ型 |bit数  |値 |
| ——– | —– | ——————————————————— |
|boolean |1bit |true あるいは false

元記事を表示

【備忘録】gulp-notifyでエラーになったのでmacにjavaを入れた

# はじめに
現在進行しているプロジェクトのタスクランナーでjavaがないとエラーになる事象が発生したので入れてみた。

# 事象
“`
[12:16:44] gulp-notify: [Error running Gulp] ⚠️ Nu Html Checker (v.Nu) のエラーが出ています ⚠️
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
“`
gulp-notifyでjavaを使ってるけど、macにjavaがないので怒られた。

# javaのインストール
今回はbrewでjavaをインストールした。
“`
java –version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.co

元記事を表示

Heroku のJAVAのJMX周り

https://exec-manager.heroku.com/

を見るといろいろわかる

HEROKU_JMX_PORT などを管理画面の環境変数に設定すると変更できる。

元記事を表示

JavaプロジェクトでAndroidアプリの通信部品クラスを開発する

#### Androidアプリの通信部品クラスをJavaプロジェクトで開発する方法について解説します。

 Android Studio はバージョンアップを重ねるごとに快適に動作させるためのPCのリソース要件が高くなってきています。**ただでさえ重い環境でUIに関係しない通信部品クラスの開発までも Android Studio で行うのは効率的ではないと私個人は思っています。**

 今回紹介するAndroidのスタブクラスを作成することで、より軽量なIDEでのJavaプロジェクトで通信部品クラスの開発が可能になります。

:::note info
この記事の実装の元ネタとなった Android 公式ドキュメントは下記で、ほぼこのサイトで紹介されている方法で通信部品を作成します。※Volley, OkHttpなどの外部ライブラリは使用しない実装になっています。
[バックグラウンド スレッドでの Android タスクの実行 (Java編)](https://developer.android.com/guide/background/threading?hl=ja#java)
+ 複

元記事を表示

Antlrを基にした複雑な電卓の実装

人事労務システムを設計する際に、ユーザーからの要望で、設定した数式で計算する機能が必要とされて、このために、Antrl(パーサージェネレータツール)を使用し、IF ELSEなどの条件分岐を含む、より複雑な計算が可能な電卓機能を実装しました。
## Antrlって何
**ANTLR**(_ANother Tool for Language Recognition_)とは、[LL](https://ja.wikipedia.org/wiki/LL%E6%B3%95 “LL法”)(*)構文解析に基づく[パーサジェネレータ](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%B5%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF “パーサジェネレータ”)である(バージョン3.xはLL(*)、2.xまではLL(k))[ Wikipedia ](https://ja.wikipedia.org/wiki/ANTLR)

## 手順
1. antrlの設定ファイル.g4ファイルを書き

元記事を表示

【Java初心者】Google Tinkを使ったAEADテキスト暗号化

# 暗号を安全に使用するために

Google Tinkのサイト( https://github.com/google/tink )のIntroductionには

あなたのアプリケーションで暗号を使用することは、暗闇でチェーンソーを投げるような感覚になるはずはありません。Tinkは、Googleの暗号学者やセキュリティエンジニアのグループによって書かれた暗号ライブラリです。これは、Googleの製品チームと協力し、実装の弱点を修正し、暗号のバックグラウンドがなくても安全に使用できるシンプルなAPIを提供するために生まれました。

と書かれています。「暗闇でチェーンソー」という表現はユニークですが、暗号の知識がなくても安全に使用できるAPIを作るという思想は素晴らしいと思います。

# AEADとは

Wikipediaにはこうあります( https://ja.wikipedia.org/wiki/%E8%AA%8D%E8%A8%BC%E4%BB%98%E3%81%8D%E6%9A%97%E5%8F%B7 )

認証付き暗号(AE: Authenticated Encryption あ

元記事を表示

javaでコンテナ作るときに気を付けるべきこと

※この記事は数行で終わります

# javaはsignalを認識できない
signalとは`Ctrl+C`などを押したときにシステム側が反応し、ソフトウェアに割込み処理を行わせるものです。
### dockerでは
コンテナ終了時に内部アプリケーション(コンテナ内のpid1)にシグナルを発報します。10秒間(デフォルト)応答がなければ強制終了します。

# つまり
javaアプリケーションに対しては最初から強制終了を行うか、シグナルを文字列に変えてコマンドとして送るかとか考えないといけないのです。

#### 補足
ここまでの成り行きを説明します。
1. マイクラサーバー立てたるかー
1. docker使お
1. 起動時にシェルスクリプトでバックアップ取るか
1. あれ?正常に終了できないしログも出ない
1. pid1問題があるのか
1. 軽量init使いたくないなめんどそ
1. webguiによるマネージャ…めんどくさそ
1. `exec`コマンドを知る(すべての元凶)
1. おお、ログが出てきた!
1. 完成や!おまいらは入れ
1. (1か月後)
1. プラグイン更新

元記事を表示

Udemy講座クーポンコードの発行(2024年1月分)と新コースリリースに向けた告知

### 自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また [「マスタリング Java EE 5」](https://amzn.asia/d/j0txqK5)や[「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)といった書籍も執筆しています。

### Udemy講座のご紹介とクーポンコード(2024年1月末まで)

現在私が講師を務めるUdemy講座には、以下のラインアップがあります。
これらのコースは、**Udedmyセールス対象外のためタイミングを気にすることなく購入可能**です。また以下のリンクから購入いただくと、クーポンが適用されたことになり、定価の**約30%OFF**で購入することができます。
|コース名|リリース|定価|クーポン適用後価格|2024

元記事を表示

【初めてのJava】まずはコーディングしてみた(インターフェース)

## はじめに
インターフェースの実装練習として、
前回作成したBMI計算機にBMR(基礎代謝量)を計算する機能を付けてみました。

## 機能
 身体のパラメーター値(身長、体重、年齢など)をセットすると、BMI、BMRの計算結果を出力するツールです。
(値の入力はハードコーディング)

## ソースコード
※長いので、折りたたんでいます。

“`java:App.java
public class App{
public static void main(String[] args){

try{
Person person = new Person();
if(!person.setParameter(“John”, 1.7, 60.5, 30, Person.Sex.MALE)){
return;
};

Bmi bmi = new Bmi();
Bmr bmr = n

元記事を表示

【Java・学習ログ17】コレクションについて~Mapの基本~

≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ 『第16章』
## Mapの使い方
マップとは2つの情報を**キー**と**値**のペアとして格納するデータ構造。格納した値はキーを指定して読み書きできる。実装の中でも特に多く利用されるのは、java.util.HashMapクラス。

《HashMapが備えるメソッド》
|操作|戻り値|メソッド|意味|
|-|-|-|-|
|追加|値|put(キー,値)|マップにキーと値のペアを格納する|
|取得|値|get(キー)|キーに対応する値を取得(なければnull)|
|調査|int|size()|格納されているペア数を数える|
||boolean|isEmpty()|要素数がゼロであるかを判定|
||boolean|containsKey(キー)|指定データがキーに含まれているかを判定|
||boolean|containsValue(値)|指定データが値に含まれているかを判定|
|削除|void|clear()|要素をすべて削除する|
||値|remove(キー)|指定した内容の要素を削除する|
|その他|Set<

元記事を表示

OTHERカテゴリの最新記事