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

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

Spring Frameworkとは

# Spring Frameworkとは
Java開発におけるフレームワーク
以下全体像(一部)

## Spring Boot
Spring アプリケーションを煩雑な設定をせずに迅速に作成する機能

## Spring プロジェクト
Spring MVC
Webアプリケーションを簡単に作成する機能
(詳細を記述)
– Spring Data
データアクセスに対する機能
– Spring Batch
バッチ処理機能
– Spring Batch
認証/認可の機能
– Spring コア
– Spring DI
依存性注入(Dependency Injection)の機能
– Spring AOP
アスペクト指向プログラミング(Aspect Oriented Programming)の機能

# Spring MVCとは
## まずMVCモデル
[概要は省略](https://qiita.com/tentom/items/de95f63bc9e2da2bd0bf)
#### 利点
– 役割分担することで効率

元記事を表示

知らなきゃ損!Azure Functionsでサードパーティ製ライブラリを超簡単に使いこなす(今回ffmpeg)

# はじめに
こんにちわ!AgVentureLabの藁谷です!
スクラムの実践をしながらJAサイネージというプロダクトを頑張って作っています!

今回、動画ファイルの圧縮処理速度向上のためAzureFunctionsでffmpegを使う必要があり、~~JavaCVじゃめんどくさいから~~ナレッジも多く転がっていることからランタイムのプロセスを利用したコマンド実行を行う方法を試みました。
要はJavaのAzureFunctions上でffmpegをコマンド実行したいって話ですね。
AzureFunctionsで作ればffmpegの並列処理が簡単にできそうなので頑張るぞい!

そこで、次のドキュメントを参考に実装してみたのですが、そのままではうまくいかず試行錯誤の末に解決しました。
同じようなことで悩んでる方の参考になれば幸いです。なおJavaでmavenです。

https://learn.microsoft.com/ja-jp/azure/azure-functions/bring-dependency-to-functions?pivots=programming-language-

元記事を表示

Javaのバージョンごとの違いとは?バージョン番号の意味は?

# ■ はじめに

この記事では、Javaのバージョンについて簡単に解説していきます。
Javaには1.0や5、11といったように様々なバージョンがあり、バージョンが上がるごとに新機能の追加や改善が行われています。
開発においてどのバージョンを使うべきか、またバージョンのアップデートを行うメリットやデメリットについても紹介していきます。

# ■ 目次

1. [Javaのバージョンとは?](#1-javaのバージョンとは)
2. [主なバージョンの違い](#2-主なバージョンの違い)
3. [バージョン番号の変遷について](#3-バージョン番号の変遷について)
4. [古いバージョンを使い続けるリスク](#4-古いバージョンを使い続けるリスク)
5. [最新バージョンへのアップデートのメリット](#5-最新バージョンへのアップデートのメリット)
6. [まとめ](#6-まとめ)

# 1. Javaのバージョンとは?

初めてJavaがリリースされたのは1995年。
以来、多くのバージョンがリリースされてきました。
新しいバージョンには

元記事を表示

Project Wakefieldの現状

# Project Wakefield
[Project Wakefield](https://openjdk.org/projects/wakefield/ “Project Wakefield”)はLinux版OpenJDKのGUI層を従来のX WindowからWaylandへ移行させるプロジェクトです。

# Waylandって何
[Wayland](https://wayland.freedesktop.org/ “Wayland”)とは従来Unix系OSのGUI層を担ってきたX Windowを置き換えるべく開発されたものです。Xとの差異については他を参照していただくとして、徐々にXの代替としての地位を築いてきて現在ではほぼすべてのLinuxディストリビューションが指定しなければWaylandで動作するところまで来ています。

# JavaのToolkitとX Windowサポート
JavaはJDK1.0の頃はLinuxをサポートしていませんでした。過去に誰かが「JDK1.0のLinux版ってどこにあるの」と尋ねていたことがありましたが、そういうものは存在しなかったのです。今か

元記事を表示

【Docker】JavaアプリコンテナとMySQLコンテナの作成と起動方法

## 記事内容
DockerでJavaアプリケーションとMySQLのコンテナを作成する方法を順に説明します。

## 準備するもの
– Javaアプリケーション(GradleまたはMavenでビルド)
– `Dockerfile`(Javaアプリケーションのビルド/実行用)
– `docker-compose.yml`(複数コンテナの管理)

## 手順

#### 1. **Dockerfileの作成**

まず、JavaアプリケーションのDockerイメージを作成するための`Dockerfile`を作成します。ここでは、Gradleを使用した場合の例を示します。Mavenでも同様にできますが、今回はGradleでの例に基づきます。

“`Dockerfile
# Step 1: Gradleを使用してビルド
FROM gradle:7.6.0-jdk17 AS build

# プロジェクトファイルをコピー
COPY –chown=gradle:gradle . /app

# Gradleでビルドし、JARファイルを生成
WORKDIR /app
RUN gradle cle

元記事を表示

build.gradleの「sourceSets」について調べてみた

## 背景
参画していたプロジェクトでbuild.gradleに以下の記載があった。
どういう意図で書かれたものなのかわからなかったので調べてみた。
“`bash:build.gradle
sourceSets {
main {
java {
srcDirs ‘src/main/java’
srcDirs ‘src/main/restapi’
srcDirs ‘src/main/test’
}
}
}
“`

## Gradleビルド時にコンパイルされるものされないもの
基本的に、標準構造に従っているソースについては、“sourceSets“の記載なしで正常にコンパイルされます。

“`bash:標準構造
・src/main/java #メインのソースコード
・src/main/resources #メインのリソース
・src/test/java #テストコード
・src/test/resources #テストのリソース
“`
しかし、上記の標準構造に従

元記事を表示

2024年版 Spring Boot “Hello World” ハンズオン (Windows11+Eclipse)

# はじめに
前から勉強しようと思っていたSpring、そしてSpringBootですが、生成AIに聞きながらHelloWorldしてみました。読者の方が同じように試せるようにハンズオン記事にしましたので、ご活用ください。

私自身はプログラミングの経験はありますが、Javaは学習レベル、Spring/SpringBootに関しては未経験です。
個人的にはPythonやRubyのようなスクリプト言語が好みですが、エンタープライズでの大規模開発ではSpringが適しているようです。

なぜSpringなのか、みたいな話はいったんおいておき、Javaでウェブアプリケーションサーバーを構築するメジャーな方法として、HelloWorldしてみましょう。

コードを書かせるのは生成AIに任せればいいと思いますが、仕組みとデプロイ方法を知っておく必要がありますので、勉強は今後も必要ですね。

#### この記事で学べる事
– Windows11でのJava開発環境(Eclipse)構築方法
– Spring Boot プロジェクト作成方法
– 簡単なWebアプリケーションのデプロイ方法

####

元記事を表示

プログラミング言語別のDate型操作方法

## 記事を書こうと思ったきっかけ
今回この記事を書こうと思ったのは、仕事や自己学習の中で日付(Date型)を扱う機会があったことがきっかけです。仕事では主にVB.NETを使用し、自己学習ではReactを使って開発をしていますが、ふと「日付を扱う方法は、言語によってどのように異なるのだろう?」と疑問を持ちました。そこで調べた内容を整理し、この記事としてまとめました。
今回調べた言語は以下の4つです。
– Java
– Python
– JavaScript
– VB.NET

## JavaでのDate型の扱い

Javaでは、日付操作に古くからjava.util.Dateが使用されてきました。近年ではjava.time.LocalDateやZonedDateTimeなどのモダンなAPIが推奨されています。日付のフォーマット変換にはSimpleDateFormatやDateTimeFormatterが使われ、タイムゾーンの考慮も簡単に行えます。これにより、異なる地域間での正確な時刻操作や、過去・未来の日付演算が容易になります。
“`Java:
// 必要なクラスをインポートします
i

元記事を表示

【Ant】build.xmlを実行後「シンボルを見つかりません」というエラーが出る

## 前提
現場業務中です。
言語:Java
フレームワーク:Struts
ビルドツール:Ant
という、相当古いシステムのため非常にニッチかと思いますが、
備忘録も兼ねて投稿します…
## やりたいこと
コード修正後、build.xmlを実行し、Jarファイルを生成、デプロイをしたい。
## エラー内容
「シンボルが見つけられません」というエラーが出力される。
## 調査
Import文でエラーが出ている。
いくつかのクラスで、Javaの共通部品(Utilクラス等をまとめたパッケージ)を
インポートできていない。
しかし、共通部品のJavaファイル自体は確実に存在しており、
プロジェクトエクスプローラーでも表示されている。
## 原因
Jarファイルの生成が出来ていない。
## 解決策
build.xmlファイルを実行するとき、ビルドターゲットの順序を指定する。
build.xmlを右クリック、「実行の構成」を選択。
ターゲットから、ビルドする部品を選択する。
このとき「共通部品」→「インポート文でエラーが出ている部品」の順でビルドするよう指定する。

元記事を表示

Java 学習記録 1日目

# 目的
私は現在、1年後の転職活動開始に向けていろいろなことを勉強しています。
この前お話を聞いた会社の社長さんから「Javaはどの業界行っても重宝される」というお話をしていただき、学習をおすすめされたので、学習記録を残していきたいと思います。
私の第一言語はC言語です。
ぶっちゃけ英語よりは得意です←
基本情報の勉強も並行して進めているので、本当に亀進捗ですが頑張ります。
まずはProgateから!

# 早速やってみよう
### Javaを動かすには
C言語の最初に「おまじない」として教わった以下の文言
“`
// これはC言語です
#include

int main(void) {
// 何らかの処理
return 0;
}
“`
これと同じようなものがJavaにもあるようです。
“`
// 今後特別な注釈がない限りコードはJavaです。
class Main {
public static void main(String[] args) {
// 何らかの処理
// 処理の文末には ; をつける
}
}
`

元記事を表示

Java Gold SE11対策 ネストしたクラスシリーズ③ ローカルクラスについて

前回の記事
[Java Gold SE11対策 ネストしたクラスシリーズ② staticインナークラスについて](https://qiita.com/hiroki1994/items/16ad6931f9fcce29cf4d)
の続きとして本記事では「ローカルクラス」についてまとめていく。

## ローカルクラスはメソッド内に定義されるもの
メソッド内に定義されるクラスがローカルクラスである。
ローカルクラスは定義されているメソッド内のみから利用することができる。

そのため、同じクラスでも別のメソッドからローカルクラスを利用することはできない。
これはローカル変数を別メソッドが利用できないのと同じだ。

下のSample.javaのsampleMethodメソッドのAgeクラスがローカルクラスである。

“`Sample.java
public class Sample {
// ローカルクラスを実装したメソッド
void sampleMethod() {
int age = 30;

// ローカルクラス
class Age{

元記事を表示

アルゴリズム初心者がbit全探索をまとめてみた

## bit全探索とは?
bit全探索とは、各要素を「選ぶ」「選ばない」の2択として扱い、すべてのパターンを探索する方法です。「0」と「1」の二進数を使って表現されます。「0」は選ばない(否定)、「1」は選ぶ(肯定)というイメージです。

例えば、5枚のカードがあり、それぞれを「引く」「引かない」の全パターンを考えると、以下のようになります。

| | 1 | 2 | 3 | 4 | 5 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 1 |
| 3 | 0 | 0 | 0 | 1 | 0 |
| 4 | 0 | 0 | 0 | 1 | 1 |
| 5 | 0 | 0 | 1 | 0 | 0 |
| | | | … | | |
| 29 | 1 | 1 | 0 | 0 | 0 |
| 30 | 1 | 1 | 1 | 0 | 1 |
| 31 | 1 | 1 | 1 | 1 | 0 |
| 32 | 1 | 1 | 1 | 1 | 1 |

### 1. 全通

元記事を表示

schemeを作ろうと思ったが難しかった(中間報告)

## 要約
Common Lisp のサブセットのインタープリタは(趣味で)何回か作った事のある私が、Schemeのインタープリタを趣味で、作ろうとしたら、大変苦戦中。
Common Lisp も Scheme も同じ Lisp系の言語として、同列に語られがちだが、インタープリタの作り方は、全く異なる。

**似て非なる言語である。**

## Schemeは、あなどられているかも知れない。

Schemeについて、よく聞く噂(都市伝説)として以下のものがある

> Schemeの仕様書は50ページしかないので、誰でも簡単に作れる。
> 一番最初に自作言語作って遊ぶのなら Schemeでしょ。

とんでもなく、間違っていると、私は思う。
Common Lispのインタープリタを何回か作った私でも、頭を抱えて悩むくらいの難しい機能のオンパレードだ。

## 難しい機能の例

### call/cc

これが、Common Lispと、Schemeを区別する一番有名な機能かも知れない。
幸いこれには、日本語で読める大変良い記事があった。

https://daretoku-unix.b

元記事を表示

Java 23新機能まとめ

Java 23が2024/9/17にリリースされました。
https://mail.openjdk.org/pipermail/jdk-dev/2024-September/009395.html
[Java 23をリリース](https://blogs.oracle.com/oracle4engineer/post/the-arrival-of-java-23-ja)
[The Arrival of Java 23](https://blogs.oracle.com/java/post/the-arrival-of-java-23)

LTSではなく新たに入った機能も少ないですが、Module Import Declarationsは長大なimport文を削減してくれそうなので期待です。

OTHERカテゴリの最新記事