- 1. Javaのfinal修飾子はどこで使用するべきか?
- 2. 例外処理の実装方法(Java)
- 3. 【オラクル西川です。第4報】Jakarta EE(Java EE)とSEとは、そもそも何か? 違いは?
- 4. Spring Bootで簡単なWebアプリを作ってみたい!【Dockerで環境構築】
- 5. Java備忘録
- 6. 【Java】10分いないでわかるファイル操作
- 7. auカブコム証券のkabuステーションREST APIで自前のトレイル注文の改善(トレイル幅の動的拡張)
- 8. Spring Data JPAのカラム名でハマったところ【Unknown column ‘○○’ in ‘field list’】
- 9. Centos7 LAMPJ & LEMPJ
- 10. 【Oracle西川です。第3報】GraalVM EEとCEの違い。
- 11. VSCodeでSpringboot+Thymeleafアプリを1から作成(環境構築編)
- 12. 例外エラーハンドリングについての解釈まとめ【Java】【Spring Boot】
- 13. 【Java初心者】PDFをA4サイズで自動印刷する
- 14. Dockerで動くLibertyでテストしながらEclipseで開発
- 15. SpringBootでRedisのクラスターに対応する
- 16. 【オラクル西川です。第2報】GraalVM入門編(プレゼン資料32枚)資料を共有します。
- 17. EntityをDTOに変換する方法【Java】【Spring Boot】
- 18. Effective Java 第3版まとめ(項目6)
- 19. 【Oracle西川です。第1報】GraalVMを御紹介します。
- 20. Java用語集
Javaのfinal修飾子はどこで使用するべきか?
## final修飾子とは?
– クラス
– フィールド
– メソッド
– 変数
につけることができます。
各要素を変更不可にする場合に使用します。
## 必須または可能な限り推奨
– **定数**(必須)
– immutableなクラス(必須)
– ライブラリ内での根幹に関係するメソッド(推奨)
### 定数
“`java
public static final int PI = 3.14;
“`
後から変更するべきでない、または変更してはいけないオブジェクトにfinalをつけることで
定数とすることができます。
定数の宣言時は変数名を`UPPER_SNAKE_CASE`のように表現するという命名規則があります。### immutableなクラス
“`java
public final class Hoge {
//フィールドの宣言
private final id;
private final name;//コンストラクタで値を設定
public Hoge(int id, String name) {
例外処理の実装方法(Java)
今まで例外処理として、try-catch、throws等について、理解されていないままプロジェクトに参画されている方を結構見てきました。
これからプロジェクトへ参画される方や、実は自分もよくわからないまま実装しちゃってる・・・って方向けに例外処理の実装方法を簡単に説明します。# 目次
[1.例外クラス](#1-例外クラス)
[2.検査例外(checked例外)](#2-検査例外checked例外)
[3.非検査例外(unchecked例外)](#3-非検査例外unchecked例外)
[4.例外処理](#4-例外処理)
[5.まとめ](#5-まとめ)# 1. 例外クラス
プログラム実行中に例外が発生すると、本来想定しているプログラムがそこで一旦終了され、実装した例外処理が実行されます。Javaの、[例外クラス(Throwable)](https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/Throwable.html)は、大きく分けて、以下二つの例外に分類されます。
* 検査例外(checked例外
【オラクル西川です。第4報】Jakarta EE(Java EE)とSEとは、そもそも何か? 違いは?
皆さま、
金曜日の夕方ですね。
Java SE Subscriptionに含まれるGraalVMの機能の事ばかり書いておりますが、Javaの事なら、何でもご相談ください。(SEライセンスの事とかでも、お気軽にお問合せください。)昨夜、Jakarta EEについて、ご照会を受けました。
「そもそも、Jakarta EEとJava SEとの違いは何なのか?」 とのご照会でした。
ありがとうございます。Jakarta EE(旧名、Java EE)とJava SEの違いは下記に、よく纏まっていると思います。
(Java EEからJakartaに名前が変わった歴史も、下記サイトに詳しいです。)
https://eh-career.com/engineerhub/entry/2020/07/07/103000#Java%E3%81%AE%E6%A8%99%E6%BA%96%E4%BB%95%E6%A7%98%E3%81%A8Java-SE>・Java SE
Javaの最も基本となる言語機能とAPI、Java VMなどを含んだプラットフォーム。Java Platform Standa
Spring Bootで簡単なWebアプリを作ってみたい!【Dockerで環境構築】
# 【経緯】
こちらの記事は前記事の[Spring Bootで簡単なWebアプリを作ってみたい!【CRUD処理を実装】](https://qiita.com/takuch/items/1a29111c97a6929baff1)の続きになります。
前記事で作成したTodoアプリを簡単にデプロイできるように、Dockerで環境を構築してみようと思います。
前記事のコードをもとに進めて行きますが、構成が同じであれば同様に環境構築できるようになっていると思います。# 【この記事でやること】
DockerでSpring BootとMySQLを使ったアプリケーション環境を構築します。
ビルド環境はmavenですが、gradleの場合の解説も補足として解説しています。# 【開発環境】
– PC: MacBook Pro(2019)
– プロセッサ: 1.4 GHz クアッドコアIntel Core i5
– OS: macOS 12.2.1
– IDE: IntelliJ IDEA 2021.2.3(Community Edition)
– Java: openjdk 11.0.12 202
Java備忘録
– [Javaファイルのコンパイル](https://qiita.com/makoto__05/private/d4ed76737d462c1a89b1)
– [Eclipseの基本](https://qiita.com/makoto__05/private/dfeee26e265b3cb0c8a8)
– [Javaのデータ型と算術子](https://qiita.com/makoto__05/private/42a6ab97501fee32547d)
– [配列とコレクション](https://qiita.com/makoto__05/private/4f24ee53e41822e94de2)
– [制御文 (条件分岐と繰り返し処理)](https://qiita.com/makoto__05/private/436de93c91ae6bba8ba6)
– [クラスの基本事項](https://qiita.com/makoto__05/private/846f188f143b2d2ddf33)
– [クラスの継承](https://qiita.com/makoto__05/pr
【Java】10分いないでわかるファイル操作
# はじめに
皆さん、java.io.Fileクラスとjava.nio.file.Filesクラスをご存知でしょうか。この2つを理解する事によって、ファイル操作をすることができるようになります。それでは詳しく見ていきましょう。# Fileクラスとは?
java.io.Fileはフォルダー/ファイルの情報を管理すると共に、フォルダー/ファイルを操作するための手段を提供するクラスです。具体的にPathを扱う方法はFileクラスのコンストラクタにファイル名やディレクトリ名を渡して、インスタンスを生成するとカレントディレクトリーにあるパスを扱うことができます。“`
File file = new File(“x.text”);
“`
# 使用方法## ファイルの存在を確かめ、存在しなければ新しいファイルを作成する方法
まずファイルの存在を確かめる為には**exesitsメソッド**を使用する必要があります。exsitsメソッドは目的のファイルが存在すればtrue、存在しなければ、falseを返します。
そして、新しいファイルを作成する為には**createNewFileメソッド
auカブコム証券のkabuステーションREST APIで自前のトレイル注文の改善(トレイル幅の動的拡張)
# はじめに
前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック
Spring Data JPAのカラム名でハマったところ【Unknown column ‘○○’ in ‘field list’】
Spring boot,JPA,MySQLを使用して、DB接続した際にカラムに関するエラーが発生してハマってしまったので忘備録として残しておく。
タスク管理アプリ作成しており、タスクテーブルに対応するentityであるTaskクラスを作成してアプリを起動した時に以下のエラーが発生した。
**【発生したエラー】**
Unknown column ‘created_date’ in ‘field list’フィールドに’create_date’という不明なものがあると言っているのはわかるが、以下の通り、entityでは’createdDate’と書いているし、MySQLでも同様の名前で命名している。
“`Task.java
@Entity
public class Task {@Id
@GeneratedValue
private int id;@Column
private int user_id;@Column
private String title;@Column
private String task;@Colu
Centos7 LAMPJ & LEMPJ
sudo vi LAMPJ.sh
“`bash
#MySQL公式のリポジトリの登録(https://dev.mysql.com/downloads/repo/yum/ を参照して、 Red Hat Enterprise Linux 7 用の最新のリポジトリを追加する)
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum -y remove mariadb-libs
sudo rm -rf /var/lib/mysql
sudo rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum -y install –enablerepo=mysql80-community mysql-community-server
sudo yum update
sudo rpm –import https://repo.mysql.com/RPM-GPG-KEY-my
【Oracle西川です。第3報】GraalVM EEとCEの違い。
皆さん、
こんにちは。
Qiitaに記事を書き始めたお陰で、ご照会が増えてきました。
ありがとうございます。GraalVMのEnterprise Edition(弊社製品)と Consumer Edition(オープンソース)の違いについて、ご質問を受けたので、下記に記載します。
よろしくお願いします。西川
ご照会は、LinkedInのメッセージ機能でお願いします。
→ https://www.linkedin.com/in/%E6%B4%8B%E6%AC%A1%E9%83%8E-%E8%A5%BF%E5%B7%9D-22a268141/![Difference btw EE&CE-v2_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634867/749138f9-a9f0-229a-7001-4b5ea9d49916.jpeg)
![Difference btw EE&CE-v2_page-0002.jpg](https://qiita-image-store.
VSCodeでSpringboot+Thymeleafアプリを1から作成(環境構築編)
# 概要
– 本題の通り。SEをやっていながら直近はShellやサーバ構築などに携わり、Javaなどの開発案件に久しく関わっていなかった。かつ新規開発案件はほぼ初。
– 頑張ったね私、という自分への鼓舞が主な目的# 環境
– JDK17.0.2
– Springboot 2.6.6
– Gradle# VSCodeでSpringboot環境を構築
– 先人の知恵を参考に、一部手順を変更して構築しました
参考:https://tech-lab.sios.jp/archives/19941## VSCodeインストール
– もともと私はインストールしてたので特に何もやってないが、以下からダウンロードしましょう。
https://azure.microsoft.com/ja-jp/products/visual-studio-code/## 拡張機能ダウンロード
– VSCodeくんにまずは必要最低限の拡張機能をダウンロードしてあげましょう。
– これによりVSCodeが「Javaいけます」「Springboot使えます」といった優秀な部下に大変身します。
– Java
例外エラーハンドリングについての解釈まとめ【Java】【Spring Boot】
Java・SpringBootを用いたAPI開発をスタート。しかし例外処理の実装する中で、様々な疑問にぶつかる日々、、(元々独学エンジニアだったので例外処理の理解が浅すぎた)
その都度調べて解釈してを繰り返し、分かった気になってきたので、それをまとめてみます。
今回は例外処理の解釈に焦点を当てているため、実装方法については触れません。## 例外処理をする意味
まずは大前提として、なぜ例外処理をするのかについて。
### 利用者視点
– 例外的状況が起きた時専用の処理を設けることで、プログラムが強制終了するのを避けられる
– 例えば、try-catch文を用いて、問題が起きている箇所だけプログラムを実行せずに飛ばしてあげる
– その上で、利用者に「ここの操作が間違っているよ!」と知らせてあげることができる
– 例えば、「送信するファイルの形式が間違っています!」と画面に表示させるなど
### 開発者視点
– どこで問題が発生したかを特定できる(=バグ修正が容易になる)
– メソッドに例外処理の記述があることで、
【Java初心者】PDFをA4サイズで自動印刷する
# 紙への印刷はビジネスではよく使う
今どきのアプリが行う出力は、画面への表示や、PDF出力などが中心ですが、ビジネスの現場では、まだメール送信や紙への印刷が多くなっています。
しかし、PDFをJavaプログラムから印刷すると、なぜかLetterサイズ(letter 8×11)となり、プリンター側で「そんなサイズの紙はないよ」エラーになってしまいました。
Acrobatなどで開いてから、「用紙に合わせてリサイズ」して印刷すれば、問題ないのですが、できれば、自動でプリンターに出せるようにしたい。
それを実現するために試行錯誤しました。PDFBoxライブラリー( https://pdfbox.apache.org/ )に依存しています。
“`java
package pdfPrint;import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.
Dockerで動くLibertyでテストしながらEclipseで開発
# 目的
ローカルにいろいろなバージョンのLibertyを導入したくないので、LibertyはDockerで動かしながらEclipseで開発をしたい。その環境を作る方法を書きます。
# DockerでLibertyを起動
Dockerやgitのインストールは省略します。
PATHにdocker コマンドが含まれているかを確認します。EclipseからPATH指定なく使えるようにします。
“`cmd
C:\Users\k_oi>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Users\k_oi>dir “c:\Program Files\Docker\Docker\resources\bin\docker.exe
ドライブ
SpringBootでRedisのクラスターに対応する
# TL;DR
– Redisへのセッション情報はapplication.yml に `spring.session.store-type: redis`、`spring.redis.cluster.node: 接続先`を設定するのみ
– 上記のみの場合、クラスターのスケールアップ・スケールアウトに対応できない
– スケールアップ・スケールアウトに対応するためにはapplication.ymlに`spring.redis.lettuce.cluster.refresh.apaptive: true` の設定が必要# 背景・モチベーション
EC2 複数台で稼働しているSpringBootアプリケーションのセッションを各EC2上のTomcatで管理している。
各ユーザのセッション保持はALBのスティッキーセッションをONにして維持している。
頻回のデプロイのタイミングで各EC2がALBから切り離されるため、デプロイごとに全ユーザのセッションが途切れてしまう。
セッションを個別KVS(Redis)化することでユーザの利便性向上を図る# アーキテクト
※ あとで図を書く
– AWS上
【オラクル西川です。第2報】GraalVM入門編(プレゼン資料32枚)資料を共有します。
こんばんは!
先程の第1報で、GraalVMの詳細資料をアップしたのですが、「細かい事を読む前に、ざっくり概略を知りたい。」というご要望を頂きました。
ありがとうございます。
下記に、私がお客様にいつもプレゼンしている、「GraalVM EE入門編」のパワポ資料を共有いたします。
ご不明な点がございましたら、お気軽にコンタクトください。尚、この資料を使った、ライブストリーミングは、毎日、西川のLinkedInで30分で開催しております。
よろしかったら、そちらもご利用ください。
https://www.linkedin.com/in/%E6%B4%8B%E6%AC%A1%E9%83%8E-%E8%A5%BF%E5%B7%9D-22a268141/西川
![日本語_GraalVM資料_apr2022_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634867/9e6ba6b1-5064-5ba0-e420-8fb48d8391f4.jpeg)
![日本語_GraalVM資
EntityをDTOに変換する方法【Java】【Spring Boot】
実装メモです。参考になれば幸いです。
## EntityをDTOに変換
### DTOクラス
DTOクラス内にofメソッドを定義。
“`java:DTO.java
public static DTO of(Entity entity) {
DTO dto = new DTO();
dto.setId(entity.getId());
dto.setTitle(entity.getTitle());
dto.setDescription(entity.getDescription());
dto.setCreateTime(entity.getCreateTime());
dto.setUpdateTime(entity.getUpdateTime());
return dto;
}
“`
### Serviceクラス
あとはofメソッドの引数にEntityをセットすれば、DTOに変換できます。
※私はServiceクラスでDTO変換の処理をしていますが、Controllerクラスで実装していただいても構いません。(どこで処理するかは設計思想によるってやつ
Effective Java 第3版まとめ(項目6)
# 項目6.不必要なオブジェクトの生成を避ける
## 書かれている内容
* “`String s = new String(“bikini”);“`ではなく、“`String s = “bikini”;“`
* 同じ文字列リテラルは同一仮想マシン上で再利用することが保証されている
* コンストラクタではなくstaticファクトリメソッドを使うことで、その両方を提供している不変クラスに対しては不必要なオブジェクトの生成をたいていは避けられる
* “`new Boolean(String)“`ではなく“`Boolean.valueOf(String)“`
* 生成が「高くつくオブジェクト」を繰り返し必要とするなら、再利用するためにキャッシュすることが勧められる
* “`String.matches“`は簡単な方法だが、パフォーマンスが重要な状況で繰り返し使うことには適していない
* “`Pattern.compile“`し、“`Pattern.matcher.matches“`することでパフォーマンスを改善できる
* 遅延初期化で不必要な初期化を取り除けるが
【Oracle西川です。第1報】GraalVMを御紹介します。
皆さま、
初めまして。
オラクルで、Javaの事業開発を担当している西川と申します。
Oracle Javaには多彩な機能がございますが、当面は、次世代Java開発基盤のGraal VMについて、Qiitaさんのプラットフォームで、ご紹介をさせて頂こうと思います。
よろしくお願いします。本日は、初めてなので、下記にて、全体資料/技術資料/Use Case/ハンドオンセミナーのご案内等のリンク情報を共有しますね。
ご不明な点は、LinkedInのメッセージ機能でご照会ください。
https://www.linkedin.com/in/yojiro-nishikawa-22a268141/西川
================
■ 全体資料
・ https://www.oracle.com/jp/java/graalvm/ (日本語)
・ https://www.oracle.com/java/graalvm/ (英語)■ Technical Info.
・ Full Doc : https://docs.oracle.com/en/graalvm/enterprise/
Java用語集
## この記事の目的
Javaを業務で使い始めた駆け出しエンジニアが、学習のアウトプットのために書きました。
勉強している際に、何かを調べても、その調べた際に出てくる用語がわからず、さらに調べていくと結局何を目的としていたのか忘れてしまうということが頻発したり、結局調べてもよくわからないという状況が続いたので、用語集があれば良いなと思い、書きました。
結構間違っている認識もあるかとは思うので、まさかりバンバン募集しているので、コメントで訂正や修正お待ちしております。
私の勉強にもなるので、ためになります。
## どんな人が書いたか
Javaを業務で使い始めて3ヶ月くらいの駆け出しエンジニアです。
Java Silverを取得するために現在勉強中。# java用語集
# オペランド
a+b=cがあったとして、
この式をオペランドという
+,=を演算子という
# リテラル
オペランドの中でも具体的な値5,10とかをリテラルという。
# キャスト演算子
むりやり型返還すること(int)
“`java
int age = (int)3.2;
//3
“`