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

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

Javaってオワコン??ーJavaでご飯を食べていけるようになりたいエンジニア

# Javaを覚えれば食べていけると言われて
自分が学生の頃にC言語をやりつつ、先生にはこれからはJava時代だ!!
Javaを覚えれば食うに困る事態にはならない!! と言われてはや数十年……
現在はプログラミングの「Vivienne Westwood」いや「焚き火台」かな
はたまた「マリオカート」的な……

例えがわからなくなってきましたが、最先端!!!! という形ではないものの、常に前線にいる存在。
そんな形でさまざまなシステムが今日もJavaで動いております。
でも、ここ最近Javaってオワコン???? という話を聞くこともちらほら……
(まぁ、有償化のときが一番ひやっとしましたが……)

そんなJavaの将来についてどうなんだ? と見ていきたいと思います。

# そもそもJavaでできることって??
Javaって色々言われているけど、現状どんな特徴あるっけ? 何が作れる? をまとめてみよう!

* Javaの特徴
1. オブジェクト指向
オブジェクティブ指向言語の筆頭に数えられるJava。そこは今も昔も変わっていません。

元記事を表示

FizzBuzzEnterpriseEditionが何をやっているのか超ざっくりと

## FizzBuzzEnterpriseEdition

https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

## 大体こんな感じ(多分)

実際はFactoryだとかがあったり(水増し用の)クラス、インターフェースが大量に作られているのでかなりカオス

“`java
import java.util.ArrayList;
import java.util.List;

interface IsEvenlyDivisibleStrategy {
boolean isEvenlyDivisible(int i);
}

class FizzStrategy implements IsEvenlyDivisibleStrategy {
public boolean isEvenlyDivisible(int i) {
return i % 3 == 0;
}
}

class BuzzStrategy implements IsEvenlyDivisible

元記事を表示

プログラミング初心者が初めてJava(基礎)を触った感想とざっくりまとめ。

# はじめに
気になっていたJavaを教材を通して初めて触ったのでそのまとめと感想を共有します。

初心者なので間違った説明や一般的ではない手順が含まれている可能性があります。
いくつかのところでRubyとの比較をしていますが、比較できるところを全てを取り上げているわけではありません(今の自分じゃ荷が重いです)。
分からなかった部分は自分で調べていたりします。
初心者が学んだことをノートにまとめているんだなーくらいの認識だとありがたいです。

# 環境

– Windows11
– AdoptOpenJDK
– vscode

# Javaの開発案件はRubyとどう違うか
## Ruby on Railsの特徴
Ruby on Railsは、小規模の組織で好まれるフレームワーク。
– 特徴
短期間でプロダクトをリリースできること
言語習得のための学習コストが低いこと
## Javaの特徴
Javaは、大手企業の基幹システムなど大規模開発に適した言語。
– 特徴
アプリケーションの仕様変更を行いやすいこと
セキュリティが強固であること
長期間にわたる保守・運用がしやす

元記事を表示

Java: `serialVersionUID`について

# Java: `serialVersionUID`について

Javaのオブジェクトシリアライゼーションは、オブジェクトの状態をバイトストリームに変換し、ネットワークを介して送信したり、ディスクに保存したりするプロセスです。このプロセスは、`Serializable`インターフェイスを実装することでオブジェクトに対して有効になります。`serialVersionUID`は、シリアライズプロセスの中で重要な役割を果たします。この記事では、`serialVersionUID`の重要性、その使い方、および指定しない場合のデメリットについて詳しく解説します。

## `serialVersionUID`とは?

`serialVersionUID`は、シリアライズ可能なクラスの固有のバージョン番号です。このUIDは、シリアライズされたオブジェクトと対応するクラスの互換性を検証するために使用されます。異なる`serialVersionUID`を持つクラスとオブジェクト間でのデシリアライズは、`InvalidClassException`を引き起こす可能性があります。

### `serialV

元記事を表示

JavaSilverの試験で多分問われない演算子の話③

# はじめに
前回の記事

https://qiita.com/hiroki1994/items/466e8a8fd88d3d73bcb2

に続き本記事では「&=,|=,^=,<<=,>>=,>>>=」といった代入演算子について紹介します。
本記事は第一弾の下記の記事の知識があれば、**左辺と右辺で演算した結果を左辺に代入する** というポイントさえ覚えていただければ問題ないです。

https://qiita.com/hiroki1994/items/ab95ecdaf3a20cac9615

# 「&=,|=,^=,<<=,>>=,>>>=」

### ①「&=」

左辺と右辺で**論理積(AND)** を取った値を **左辺の変数に代入します**。

では「a &= b」で考えていきましょう。
これは **「a = a & b」** と同じ意味です。
a=1100、b=0101の場合下記の図のように、
論理積なのでab両方1の桁は1に。
それ以外の桁は、両方0もしくは片方が0なので0になります。

上記の**a & bの結果**を**変数aに代入**します。

|

元記事を表示

Java基礎まとめ(データベース) 編集中

# はじめに
Javaの学習を始めました。
こんなレベルから・・・?というくらい超基礎~から執筆します。
自身が復習できるような自身の備忘録を作成していきます。

# データベース接続の仕組み
### データベース(DB)
データを整理・蓄積したもの。DBとも呼ぶ。
Dataは資料。基礎事実。実験、観測、調査、統計学的に処理したりして得た数値情報。
baseは「基地」という意味があり、直訳すると「情報の基地」のようなもの

データを管理してくれるソフトウェアのこと。
そしていろいろな種類があり、どのDBを利用するかを決定した上で開発をすすめる。

* Oracle
* MySQL

などいろいろなDBソフトウェアがある。

### JDBC
Java DataBase Connectivityの略
Javaとデータベースをつなげる役割をするもの(クラスやインターフェイスの集まり)

* JDBC API
APIとはプログラムやサービスの機能を外部から使えるようにする仕組みや利用方法
JDKに含まれるパッケージなので、一般的なJava環境

元記事を表示

devContainerでNext(React)+SpringBoot(Java)の開発環境を作成する BackEnd編

Next+springBootの開発環境構築2部作のBackEnd編になります。
FrontEndについては[こちら](https://qiita.com/ede/items/e1259f005af47be9ffe2)。

## 構成
– SDKMAN
– SpringBoot
– gradle
– Java
– mySQL

# 手順

## DevContainerを作成
– 1.VScodeを起動する
適当なフォルダーを作成して、そのフォルダー配下でVSCodeを起動する。
“`
~$ mkdir sample-project-backend
~$ cd sample-project-backend

sample-project-backend$ code .
“`
– 2.VSCodeのコントロールパネル(`ctrl + shift + P`)から、`「Dev containers:Add Dev Containers Configuration Files…」`を選択す
– 3.`「Java」`を選択
– 4.「Java」のバージョンを選択(17)。
– 5.CL

元記事を表示

AOJ ITP1 8-A Toggling Cases

AOJのITP1 8-AにJavaで挑戦した。

~~~java:Main.java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
String ans = “”;
for (int i=0;i

元記事を表示

Leetcode 1930. Unique Length-3 Palindromic Subsequences

https://leetcode.com/problems/unique-length-3-palindromic-subsequences/description/?envType=daily-question&envId=2023-11-14

# アプローチ
– hashset

1. 同様のCharを持ってくる
1. 同様のCharスタート時点から終了時点の間のCharを取得
1. 上記で取得したCharをHashSetで入れる(他のCharを取得)
1. 結果を合算する
1. 結果を出す

“`java
class Solution {
public int countPalindromicSubsequence(String s) {
int result = 0;

for (int i = ‘a’; i < 'z'; i++) { int firstOccurence = s.indexOf(i); int lastOccurrence = s.lastIndexOf(i);

元記事を表示

Gitを使う開発者のための時間節約術:自動`.gitkeep`ファイル生成ツール

# はじめに
開発者の皆さん、空のディレクトリをGitリポジトリに含めるために`.gitkeep`ファイルを一つずつ手動で作成する作業に時間を取られていませんか?今日は、この面倒な作業を自動化するツール「GitkeepGenerator」の使い方とメリットをご紹介します。

# GitkeepGeneratorとは?
`GitkeepGenerator`は、指定されたディレクトリパス内のすべての空のディレクトリに`.gitkeep`ファイルを自動的に作成するJavaプログラムです。このツールを使うと、空のディレクトリをGitリポジトリに簡単に追加できます。

# なぜ`.gitkeep`ファイルが必要?
Gitは空のディレクトリをトラックしません。プロジェクトのディレクトリ構造を保持するためには、空のディレクトリに何らかのファイルを置く必要があります。`.gitkeep`はその目的で広く使われています。

# GitkeepGeneratorの使い方
1. **ダウンロードとセットアップ:** GitkeepGeneratorのJavaプログラムをダウンロードし、Java環境をセットア

元記事を表示

Quarkusのチュートリアルで少しつまづいた話

# つまづいたこと

Quarkus公式の[Get Started](https://quarkus.io/get-started/)の通りに進めてLAN内サーバの`localhost:8080`にデプロイしたが、クライアントマシンのブラウザから`サーバのIP:8080`でアクセスできない。

# 結論

`src/main/resources/application.properties`に以下を記載する。
“`
quarkus.http.host=0.0.0.0
“`
以上。

# 原因

参考にした[stackoverflow](https://stackoverflow.com/questions/55043764/how-to-make-quarkus-to-listen-on-all-network-interfaces-instead-of-localhost)の記事によると、Quarkusはデフォルトではループバックアドレスの`127.0.0.1`しか受け付けていないらしい。

`src/main/resources/application.properties`修

元記事を表示

Java基礎まとめ(クラスライブラリ)

# まずはじめに
Javaの学習を始めました。
こんなレベルから・・・?というくらい超基礎~から執筆します。
自身が復習できるような自身の備忘録を作成していきます。

# クラスライブラリとは
クラスライブラリは直訳すると「クラスの図書館」
Javaの開発環境であるJDKの一部として、提供されるクラス群をクラスライブラリと呼ぶ。
数千のクラスやインターフェイスがまとめられている。よく使われる機能をまとめた便利セットのようなもの。

【クラスライブラリ例】
* java.lang
基本的なクラス
* java.io
入出力関連
* java.net
ネットワーク関係

などなど

たくさんあるので、よく使うものをその都度学習という形でよいかも。

# APIドキュメント
API(Application Programming Interface)は、アプリケーションやプログラムをつなぐもの。
開発者は呼び出し方さえわかれば、呼び出して利用できる。(System.out.println();みたいなやつ)

クラスライブラリーやそれに含まれるメソッド・メンバー変数がまとまっているものを
*

元記事を表示

JavaSilverの試験で多分問われない演算子の話②

# はじめに
前回の記事

https://qiita.com/hiroki1994/items/ab95ecdaf3a20cac9615

に続き本記事では「&,|,^」といったビット演算子、三項演算子「?:」について紹介します。

# ビット演算子「&」「|」「^」

### ①「&」
**論理積(AND)** を取ります。
a=1100、b=0101の場合下記の図のように、
論理積なのでab両方1の桁は1に。
それ以外の桁は、両方0もしくは片方が0なので0になります。

| |4桁目|3桁目|2桁目|1桁目|
|:-:|:-:|:-:|:-:|:-:|
|a|1|1|0|0|
|b|0|1|0|1|
|a & b|0|1|0|0|

こちらを実際のプログラムで見てみましょう。
“`java:And1.java
public class And1
{
public static void main( String[] args )
{
int a = 12; // 2進数 : 1100
int b = 5; // 2進数 : 0101

元記事を表示

環境構築

環境構築に関するメモです。
[参考サイト](https://qiita.com/bonny_d/items/409d1c59fcc0c30f97ae#%E7%B5%8C%E7%B7%AF)の簡易版+Java という感じでまとめます。随時更新。

## tool類
– [clibor](https://www.vector.co.jp/soft/dl/winnt/util/se472890.html)
– [サクラエディタ](https://github.com/sakura-editor/sakura/releases)
– [visual studio code(インストール+日本語化)](https://www602.math.ryukoku.ac.jp/Prog1/vscode-win.html)
– [git](https://gitforwindows.org/)
– [rapture](https://rankup-stage.com/rapture/)
– [drawio](https://www.drawio.com/)
– [Graphviz](https://gr

元記事を表示

ライブラリなしのソルトの生成と文字列への変換

ソルトをランダムに生成する方法と任意の文字列をソルトにする方法です。
また、ソルトを文字列にして保持する場合に16進数やBase64に変換する方法です。
ライブラリを使わない方法を記載しました!

“`java:ByteConvert.java
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Base64;

public class ByteConvert {

public static void main(String[] args){
//ランダムなソルトの生成
byte[] salt1 = createSalt();
System.out.println(salt1);
System.out.println(Arrays.toString(salt1));
StringBuffer hexSalt1 = byteToHex(salt1);
System.out.println(hexSalt1);
String ba

元記事を表示

【Java】Mac で Java を利用するときに注意すべきエラーと対処法

## 概要
macOS で、PC ゲームの「Minecraft(マイクラ)」の Java版に Mod を導入しようと思って、使用 PC で初めて Java を利用した際に発生したエラーに対する対処法の備忘録。

### 前提
OS: macOS 13.3.1 (Ventura)
CPU: 3.2GHz 8コア Intel Xeon W

## 発生した事象
Mod を導入するための前提 Mod **「Minecraft Forge」** を導入するため、そのインストーラ(**forge-1.20.2-48.0.37-installer.jar**)をダウンロードしてダブルクリックで実行したら、以下のエラーメッセージが発生。

:::note info
「Mod」とは、一般には、ゲームを拡張・変更する非公式のプログラムやソフトウェアのこと。
:::

“`
操作を完了できませんでした。
Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

元記事を表示

Java Stream API 特講 第二章 ~ 関数型interface

## 目次

1. [第一章 ~ メソッドの受渡しとStrategyパターン](https://qiita.com/kt-52/items/57918165d006b366326a)
1. 本講義の目的
1. メソッドは非第一級オブジェクト
1. メソッドを受渡ししたい場合
1. Strategyパターン
1. **第二章 ~ 関数型interface**
1. Strategyパターンの弱点
1. 関数型interface
1. 標準ライブラリ `java.util.function`

## Strategyパターンの弱点

前章では、Javaではメソッドそのものの受渡しができないこと、Strategyパターンを用いることでメソッドをインスタンスで包んで受渡しすることができることを説明しました。

しかし、Strategyパターンには弱点もあります、それは記述量が多いことです。

Strategyパターンは、前章で解説した通り

1. interfaceを定義する
1. そのinterfaceを実装したclassを定義し、そ

元記事を表示

【Selenide】Web自動テスト マニアックなつまづきポイントと対処方法まとめ

## はじめに
Selenideは、JavaベースのWebテスト自動化フレームワークです。
Seleniumをより使いやすく、簡潔なコードでWebUIテストを記述できるようにしたラッパーです。
今回は自動化対象システムがJava製のため、開発ツール類の親和性とメンバーのJavaスキルアップのためPython+SeleniumではなくJava+Selenideを採用しました。

基本的な使い方の記事はたくさんあるので、ここでは少しマニアック(?)なつまづきポイントと対処方法をまとめてみます。

## テストを連続実行する場合に、前のテストのキャッシュ(cookie,localstrage)によりテストが失敗する。
@Before(各ケースの直前に実行)クラスでキャッシュクリア
“`java
@Before
public void beforeTest() {
clearBrowserCookies();
clearBrowserLocalStorage();
}
“`

## テスト環境の自己証明書エラー回避
“`java
Desire

元記事を表示

形式記述言語VDM++の制御構文(while文)をJava C# Re:Mind(自作言語)と比較

# はじめに
要求仕様記述段階での使用が主に想定されている数学的形式手法VDM(Vienna Development Method)[^1]のオブジェクト指向拡張言語VDM++ですが、ロジックの実装も記述できる構文が用意されています。本記事ではVDM++の制御構文(while文)をJavaとC#そして自作言語のRe:Mind[^2] と比較してみます。

## この記事内容の作業目的
VDM++の下記の制御構文[^3][^4]についていくつかの記事に分割して比較検討します。

・ブロック文
・代入文
・条件文
・**ループ文** ←本記事対象
・call文
・return文
・コメント文
・例外

VDM++はオブジェクト指向言語的な言語要素を持ち、数学的形式手法言語の中では一般のプログラミング言語のオブジェクト指向言語に近い面があります。また、VDMのような数学的形式手法を使わない場合は、一般的に自然言語の日本語で要求仕様が記述されているものと推察されます。本記事では数学的形式手法と自然言語の日本語記述とのはざまで、構造化された日本語が要求仕様記述に使えないか模索しています。

クラ

元記事を表示

Leetcode 2785. Sort Vowels in a String

https://leetcode.com/problems/sort-vowels-in-a-string/description/

# アプローチ
– Priority Queue

“`java
class Solution {
public String sortVowels(String s) {
PriorityQueue pq = new PriorityQueue<>();

for (char a : s.toCharArray()) {
if (a == ‘a’ || a == ‘e’ || a == ‘i’ || a == ‘o’ || a == ‘u’ || a == ‘A’ || a == ‘E’ || a == ‘I’ || a == ‘O’ || a == ‘U’) {
pq.add(a);
}
}

String result = “”;

for (char a

元記事を表示

OTHERカテゴリの最新記事