JAVA関連のことを調べてみた2020年06月02日

JAVA関連のことを調べてみた2020年06月02日

Javaのクラスメソッド

###クラスメソッド
クラスに属するメソッドのことです。
クラスメソッドの定義は、「public static 戻り値の型 メソッド名()」です。
クラスメソッドはインスタンスを生成しない状態でも呼び出せます。
【例】Personクラスとします

“`Person.java
class Person {
public static 戻り値の型 メソッド名() {
// メソッドの処理
}
}
“`
【例】

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

〜省略〜

Person.printCount();
}
}
“`

“`Person.java
class Person {
public static int count = 0;

〜省略〜

public static void printCount() {
System.out.println(“合計は” + count + “です”);
}
}
“`

元記事を表示

GraalVMを使ってみる

## 前書き
GraalVMのパフォーマンス、しいては、GraalをJITコンパイラとして利用した際のパフォーマンスにフォーカスした記事なので、GraalVMの特徴の一つであるnative imageや、multiple languagesなどに関しては、この記事では触れていない。

## 環境
– macOS Mojava 10.14.4
– Scala 2.13.1
– sbt 1.3.8
– GraalVM 20.1

## GraalVMとは

Javaで書かれた最新のJITコンパイラ、Graalを搭載したVMである。
[GraalVM公式ドキュメント](https://www.graalvm.org/)によると、Graalには以下の特徴がある。

> Graal自体がjavaで実装されているので、標準のJITコンパイラではできなかった部分的なエスケープ分析などの強力な最適化により、Javaプログラムを大幅に高速化できる

実際にどのくらい速くなるのかは後述している。

ちなみに、VM変更するのは面倒であれば、以下のオプションをつけることで、JITコンパイラだけGraalに

元記事を表示

[Mac]Visual Studio CodeにJavaをインストールする

以下のページを開き、ダウンロードする。
https://code.visualstudio.com/
スクリーンショット 2020-06-01 21.37.42.png

ダウンロード以降の手順は↓を参考にすると分かりやすいです。
https://qiita.com/watamura/items/51c70fbb848e5f956fd6

元記事を表示

JavaによるExcelコメントの追加、読み取り、削除

注釈は、指定されたExcelセルにプロンプ​​トまたは追加情報を追加するために一般的に使用されるリッチテキスト注釈です。Free Spire.XLS for Javaは、JavaアプリケーションでExcelファイルにコメントを無料で追加および操作する機能を開発者に提供します。この記事では、Free Spire.XLS for Javaを使用してExcelドキュメントのコメントを追加、読み取り、削除する方法を紹介します。

**基本的な手順:**
**1.** [Free Spire.XLS for Java](https://www.e-iceblue.com/Download/xls-for-java-free.html)パッケージをダウンロードして解凍します。
**2.** libフォルダーのSpire.Xls.jarパッケージを依存関係としてJavaアプリケーションにインポートするか、MavenリポジトリーからJARパッケージをインストールします(pom.xmlファイルを構成するコードについては、以下を参照してください)。
**3.** Javaアプリケーションで、新しいJava

元記事を表示

MacにJava開発環境をインストールする

# 最終更新日
2020年6月1日

検証を行ったmacOSのバージョンは下記です。

– macOS Catalina 10.15.5

インストールするもののバージョンは下記です。

– AdoptOpenJDK 11.0.7 (HotSpot)
– IntelliJ IDEA Community Edition 2020.1.1
– Maven 3.6.3

> この記事が古くなった場合、下記の手順は最新のインストール手順とは異なっている可能性があります。

# JDK
## JDKとは
Java Development Kitの略です。Java開発に必要なコンパイラ・JVM(Java Virtual Machine : Java仮想マシン)などが一体になっています。

JDKは色々な団体・ベンダーが提供しています。今回はAdoptOpenJDKを利用します。

> 複数バージョンのJDKをインストールしたい場合は、[SDKMAN!](https://sdkman.io/install)を使ったほうがよいでしょう。

## JDKのインストール
(1) https://adopt

元記事を表示

JavaでTODOアプリを制作しよう2 Spring Initializrで雛形を作ってHello worldしたい

こんにちは。
[JavaでTODOアプリを制作しよう1 MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)の続きの記事です。

今回はとりあえずControllerを作ってそこからViewを表示させるところまでやってみたいと思います。

## TODOアプリ作成リンク集
[1: MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
2: Spring Initializrで雛形を作ってHello worldしたい(今ここ)

## Springの雛形を作成

まずは[Spring Initializr](https://start.spring.io/)でSpringの雛形を作っていきましょう。

Screen Shot 0002-06-01 at 12.53.18.pngPlayframeworkでHikariCPのコネクション数をDataDogでモニタリング

## アプリケーション側の設定

### hikariCPのMbeansの設定を有効にする

“`application.conf
play.db.prototype.hikaricp.registerMbeans = true
“`

### ConnectionPoolにPoolNameを設定する

デフォルトだと HikariCP-1, HikariCP-2 みたいになってしまうので、わかりやすい名前をつける

“`application.conf
db.default.hikaricp.poolName = default
db.default-ro.hikaricp.poolName = default-ro
db.accesslog.hikaricp.poolName = accesslog
“`

## DataDog-agentの設定

参考: https://docs.datadoghq.com/ja/integrations/java

### conf.d/jmx.d/conf.yaml を編集する

PoolごとにMBe

元記事を表示

Java(Jsoup)を使って株価チャートをスクレイピングをしてみた

#やったこと

Jsoupを使って、Yahoo! Financeの株価チャートをスクレイピングしてみました。
ちなみに、スクレイピングした株価チャートはアリババ(BABA)です。
アリババを選んだ理由は単純に伸びて欲しいからです。。。

#こんな感じ
スクリーンショット 2020-05-31 20.06.36.png

#コード

“`java
@Controller
public class YahooFinanceController {
private static final String YAHOO_FINANCE_URL = “https://stocks.finance.yahoo.co.jp/us/detail/BABA”;

@RequestMapping(“/”)
public Str

元記事を表示

[Java] Date 関連用語メモ

久々に サーバー側プロジェクトを担当することになりました。
しかも環境がdb & windows & Java など (T、T)
ですので、用語など勉強絡みでメモします。

#用語
##1。 ISO-8601暦体系
日付と時刻の表記に関するISOの国際規格

基本形式: YYYYMMDDThhmmss+0900
例)20200531T115959+0900

##2。 GMT(グリニッジ平均時:Greenwich mean solar time)
英国のグリニッジ(経度0度)の地方平均太陽時
(平均太陽が南中する時を正午とする)
Greenwich.png
グリニッジ天文台旧本館

##3。 UTC(協定世界時:Universal time coordinated)
セシウム原子を利用し

元記事を表示

Db2を利用したJavaアプリケーションでERRORCODE=-4471が発生する。

# 環境

本記事を書くにあたって利用した主なソフトウェアのバージョンは次の通りです。

– javac 11.0.4
– openjdk version “11.0.4” 2019-07-16
– IBM DB2 Developer-C Edition 11.5 (Docker/wsl2)
– IBM Data Server Driver for JDBC and SQLJ 4.26.14

# 事象

以下のコードは`EMP`というテーブルからすべての`EMPNO`を取得し、標準出力に出力するというものです。

“`java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {
public static void main(String[] args) {
String

元記事を表示

多段階選抜 (Java/Groovy/Scala)

|多段階選抜|解答日|シリーズ:yieldの練習/ジェネレータを入れ子に/整数平方根・立方根の実装|
|:–|:–|:–|
|問題| |http://nabetani.sakura.ne.jp/hena/ord24eliseq/
https://qiita.com/Nabetani/items/1c83005a854d2c6cbb69|
|Ruby|2014/8/2(当日)|https://qiita.com/cielavenir/items/9f15e29b73ecf98968a5|
|C#/Python|2014/8/4|https://qiita.com/cielavenir/items/a1156e6a4f71ddbe5dcb|
| | |ここから上はdrop_prev_square/drop_prev_cubicをまとめる前の答案|
|Go/C#/Ruby/Python|2014/8/5|https://qiita.com/cielavenir/items/2a685d3080862f2c2c47|
|PHP/JavaScript|2014/9/9|https:

元記事を表示

覗き見可能なイテレータを作ってみる

## 前書き
イテレータのラッパークラスを作る際、hasNextの実装に困ることが多い。
ただラップするだけなら内部のイテレータに委譲すれば良いが、都合上そのような戦略を取れない場合だ。

次の要素を覗き見れれば便利なのに… というわけで、作ってみる。

## 本題
次のような動作をするクラス、PeekableIteratorを作ってみた。

“`Java
var src = java.util.List.of(3, 1, 4);

var peekIt = new PeekableIterator<>(src);
while(peekIt.hasNext()) {
System.out.printf(“次の要素は %d です。\n”, peekIt.peek());
System.out.printf(“もう一度言います。 %d です。\n”, peekIt.peek());
System.out.printf(“ほら、本当に %d だったでしょ?\n”, peekIt.next());
System.out.println();
}
Syste

元記事を表示

Apache Camel Spring Boot starters でDB上のデータをバッチ処理するサンプル

「[Apache Camel Spring Boot starters を使った単純なcamelアプリの作成手順](/HMMNRST/items/db9cb387ecfde0944496)」の続きで、**MySQLにためたタスクを処理するバッチ**を実装する。

本当は複数マシンで並行処理させる際の**排他制御を実験する**という目的があるのだが、SQLもcamelもJavaも中途半端な理解なのでまだそこまでできない。今回のアプリはそこへ繋がりそうなサンプルという位置付け。

前回の分は説明しないが、必要なファイルは全てこちらの記事に書くので見返さなくても動かせる。

“`text:ファイル一覧
path/to/app/
├── src/main/
│ ├── java/org/example/mycamelapp/
│ │ ├── db/
│ │ │ ├── TaskSql.java
│ │ │ └── TaskTable.java
│ │ ├── proces

元記事を表示

十数年前のJava使いが、今更ながらJava8 の機能を勉強してみた( ラムダ式編 )

# はじめに
最近お仕事の都合で、Java を使う機会に恵まれたので
太古のJava( 1.3 )知識をアップデートしてみました。

## ラムダ式 とは
関数的インターフェイスを簡単に実装するための機能です。

これだけでは何のことかさっぱりなので、例を出しつつ説明したいと思います。

## ラムダ式の違いをコードで比較
### ラムダ式を使わないコード
“`java
public static void main(String[] args) {

class Sample implements Runnable {
public void run() {
System.out.println(“I Love Pengin!”);
}
}

Runnable runner = new Sample();
times( 10, runner );
}

public static void times( int count, Runnable runner ) {
for( int i = 0; i < count; i++ )

元記事を表示

十数年前のJava使いが、今更ながらJava8 の機能を勉強してみた( Generics編 )

# はじめに
最近お仕事の都合で、Java を使う機会に恵まれたので
太古のJava( 1.3 )知識をアップデートしてみました。

## Generics とは
利用する型の処理を実装時に確定する機能です。

これだけでは何のことかさっぱりなので、例を出しつつ説明したいと思います。

## Generics 有無をコードで比較
### Java1.3の頃のコード
“`java
List list = new ArrayList();

// list に値を格納
// String -> Object への変換なので暗黙的に格納出来る
list.add(“1”);
list.add(“2”);
list.add(“3”);

for (Iterator it = list.iterator(); it.hasNext(); ) {
// list の値を取得して表示
// 取得時は Object -> String は明示的なキャストが必要
String str = (String) it.next();
System.out.println(str);
}
“`

##

元記事を表示

JavaのStringクラスのメソッドいろいろ

#文字列調査に関するメソッド
|メソッド|操作|引数型|戻り値型|
|——-|—|—–|——-|
|equals|内容が等しいかどうか調べる|String|boolean|
|equalsIgnoreCase|大文字、小文字の区別を無視して内容が等しいかどうか調べる|String|boolean|
|length|文字列の長さを調べる|String|int|
|isEmpty|空文字かどうか調べる|String|int|

#文字列検索に関するメソッド
|メソッド|操作|引数型|戻り値型|
|——-|—|—–|——-|
|contains|文字列が含まれるかどうか調べる|String|boolean|
|startsWith|指定された文字列で始まるかどうか調べる|String|boolean|
|endsWith|指定された文字列で終わるかどうか調べる|String|boolean|
|indexOf|指定された文字または文字列が最初に登場する位置を調べる|String|int|
|lastIndexOf|指定された文字または文字列

元記事を表示

OpenJAVA で Spring Boot

# はじめに
Spring Boot って便利ですよね!

Javaで少し規模が大きなWebアプリケーションを開発しようと思ったら、アプリケーションフレームワークが必要になると思いますが、EJBにしてもStrutsにしてもSpring Frameworkにしても、Javaのフレームワークはなかなか手ごわい。
そこへ行くと、Spring Tool Suiteの使いやすさもあって手軽に本格的なアプリケーションを構築できるSpring Bootは本当に便利だと思います。

ところが、Spring BootのデフォルトJDKって**Oracle Java SE 8**だったりします。
OracleのJDKはライセンス条項が変更されて、開発や個人の学習用途では無償利用できるけど会社の業務として利用する場合は注意が必要ですね。
そんなわけでOpenJDKで使えないものかと考えました。

# いきなり結論から
まず、できたのかできないのかが気になるところなので結論から。
できます。全然問題ありません。少なくとも私が作成した程度のWebアプリでは
今のところ問題は出ていません。
というわけで、私の環境

元記事を表示

Coursierで特定のmaven artifactの依存関係を確認する

Androidでの開発やJavaなどのJVM言語での開発で、あれ、このライブラリって何に依存しているんだっけ?って思うことよくありますよね?
皆さんはどのように確認しているでしょうか?
https://mvnrepository.com/ などのサイトを見たり、 `./gradlew dependencies`で確認するなどさまざまだと思います。

今日はScalaで書かれたCoursierというCLIツールが便利だったので紹介します。
https://get-coursier.io/

# 使い方
ターミナル上で `coursier resolve maven_artifact`という感じで確認できます

“`
$ coursier resolve io.circe:circe-core_2.12:0.10.0
io.circe:circe-core_2.12:0.10.0:default
io.circe:circe-numbers_2.12:0.10.0:default
org.scala-lang:scala-library:2.12.6:default
org.scala-

元記事を表示

【Kotlin】面積当たりの容量が大きいpngを生成したかった【Java】

# やりたかったこと
とある案件で大量の重めの`png`画像サンプルが必要になりました。
一方、単純に四角を`fill`するような形で画像を生成した場合、圧縮されてしまって高々数KB程度になってしまうなど、容量が確保できませんでした。
必要な画像のフォーマットも決まっていたため、単純に面積を増やして容量を稼ぐことも難しかったです。

# 方針
圧縮というものは大概以下2点に当てはまる場合強く作用します。

– 同じパターンが連続する
– 同じ色が連続する

よって、「ランダムな色のランダムな線を沢山引けば圧縮しにくいだろう」というノリでやりました。

目標は1940 x 500のサイズで1枚2MBです。
それを達成していれば一旦構わないため、更なる大容量化や処理時間に関しては気にせずにやっていきます。

# 実装
`${プロジェクトルート}/build/generated`ディレクトリに2000枚の画像を生成するサンプルです。
`lines`が100000有れば安定して2MBを超えてくれました。

`parallelStream()`しているのは「ちょっとは早くなるんじゃね」程度のノリ

元記事を表示

JDKの設定方法をまとめてみた【VSCode】

VSCodeでJDKのパスを設定する方法をまとめてみました。
今回使ったJDKはOracleJDKとAdoptOpenJDKです。
まだJDKをダウンロードしていない方は以下のサイトでダウンロードしましょう。
おすすめはAdoptOpenJDKです。

AdoptOpenJDKのダウンロードサイト
[https://adoptopenjdk.net/](https://adoptopenjdk.net/)
OracleJDKのダウンロードサイト
[https://www.oracle.com/java/technologies/javase-downloads.html](https://www.oracle.com/java/technologies/javase-downloads.html)

## JDKを設定する前に知っておきたいこと

### パスとは何か

パスとはファイルやフォルダを保存している場所のことです。
JDKのデフォルトのパスは
AdoptOpenJDK `C:\Program Files\AdoptOpenJDK\バージョン`
OracleJDK `C:\P

元記事を表示

OTHERカテゴリの最新記事