JAVA関連のことを調べてみた2019年11月10日

JAVA関連のことを調べてみた2019年11月10日

JavaED Full Edition(pleiades)の立て方

初めましてNev(ねぶ)です!
今回初めてJavaを触るので、勉強のログ用に開発環境の立て方を残しておきます!

※今回は個人的なJavaの勉強用の開発環境の立て方になります。商用利用する際は必ずライセンス確認をしましょう!!
Javaのライセンスチェックはこちらから
→https://java.com/ja/download/

Javaってなんぞやって方はこちらからどうぞ!

【超初心者向け】今さら聞けない!Javaとは?

!!Warning!!
かなりメモリを食うので、PCのメモリをチェックしておくことをお勧めします!!!
OSが最新の状態にアップデートされてるか必ず確認しましょう!!

#事前解説
今回はJavaの統合環境兼日本語化プラグインの入った開発環境を建てたいので”Eqlipse”ではなく日本語化プラグインも入った”JavaED Full Edition(Preiades)”をインストールしましょう!

Preiadesとはなんぞやって方はこちらをご覧ください!
→https://ja.wikipedia.org/wiki/Eclipse_(%E

元記事を表示

JavaのFutureの取り回しがダルすぎるので色々工夫してみる。

# まえがき
何時もの如く、ブログからの転載です。

“`
街の名はホーチミン1区。
一夜にして崩落・再構成されパフォーマンス向上の租界となったこの都市は、マルチスレッドを臨む境界点で、極度の緊張地帯となる。
ここで世界の均衡を守るため暗躍するJava標準クラスFuture。この物語はこのFutureに挑む開発者の戦いと日常の記録である。
(血界戦線風)
“`

ということで、久々の記事はjavaの非同期処理の返り値ラッパーである、Futureの取扱いについて、僕がよくやる実装Tipsについて書いていきたいと思います。

今回のテーマとしては、

– **マルチスレッド、非同期処理でも上手いことエラーハンドリングしたい**
– **Futureの返り値展開をスッキリさせたい**

の2つです。

# 1. 標準的な非同期処理とFutureの取り回し
Javaでマルチスレッド処理を書く際、多くの人は以下のような処理を書いていると思います。

0. Exec

元記事を表示

ユーティリティークラスについてのぼやき

なぜ人々は`Util`なんて情報量ゼロの名前をつけた**クラスに**何でもかんでも押し込んでしまうのか?
という問いをよく見かけますが、それは何でもボンボンと放り込んでいるというのが一つの答えです。
とはいえ、それがクラスじゃなければ、多少は事態がマシになるのではないでしょうか?

“`java:A
public class Util {
public static int util1() {
return 0;
}

public static int util2() {
return 0;
}

public static int util3() {
return 0;
}

public static int util4() {
return 0;
}
}
“`

よくあるstaticメソッドの集合ですが、一つやるべきことを忘れていますね。そう、念の為のコンストラクタ封印。
つまり、本来はこうすべきだったのです。

“`java:A2
public class Util {
private Util() {

元記事を表示

dbpediaの研究 その25

#概要

dbpediaが難解なので、手出してみる。
javaで、取得してみた。

#サンプルコード

“`
import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class Main {
public static String sendGet(String url, String param) {
String result = “”;
BufferedReader in = null;
try
{
String urlNameString = url + “?” + param;
URL realUrl = new URL(urlNameString);

元記事を表示

Mavenのデフォルトのコンパイラバージョンは1.5

# はじめに
Javaで個人的に遊んでいたところ、ちょっとはまったことがあった。
割と基本的なことなのかもしれないけど、知らかなったので備忘録的に記載しておく。
(資格で得た知識が多いからこういう実践的なところが結構抜けてるんだよなぁ・・・)

# 発生した事象
Maven の project update を実行すると、JRE 1.5 でコンパイルされるため、JDK 1.6 以降の構文で記載したプログラムはコンパイルエラーになる。

以下、詳細。

事前の状態。
JRE System Library が JRE 1.8に設定されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254168/92ab5bb7-dcbd-da15-9e2b-8955f7e1cc1e.png)

右クリック⇒Maven⇒Update Project を実行
(またはAlt+F5)
![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

オイラー法による変数係数二階線形斉次微分方程式の数値計算

#はじめに
$$\frac{d^2v}{dt^2}+\frac{P}{EI(t)}v=0$$
を解く.$P,E$は適当な変数で$I(t)$は今回$t$が1.0ずつ増えるにしたがって$I(t)$も1.0ずつ増えるステップ関数とする.
#厳密解は
これは変数係数の二階線形斉次微分方程式なので一般的解法が存在しない.よって特殊解として$$v=t^m$$あるいは$$v=e^{mt}$$を式に代入して解となるように定数mが定まるかどうかを調べる.試しにMathematicaで
“`DSolve[v”[t] + (P0/E0)*(1/UnitStep[t])*v[t] == 0, v[t], {t, 1, 10}]
“`
と入力する基本解が得られる.
#オイラー法による近似
“`
public static void main(String[] args) {
double v0=3.0,z0=4.0,h=0.1;//初期値
int n=10;
double v,z,z1;//変数
double p= 2.0;//変数
double e= 3.0;//変数
doub

元記事を表示

ScalaからJavaCPP + Java経由でネイティブライブラリーを使う

# はじめに

未踏ターゲット2018年度ゲート式量子コンピュータにおける開発でC++で主に書かれた量子コンピューターのシミュレーターである[Qulacs](https://github.com/qulacs/qulacs)を利用している。QulacsはPythonバインディングがすでに用意されているが、やはりより慣れたプログラム言語であるScalaで開発をしたいと常に思っていた。そこで[JavaCPP](https://github.com/bytedeco/javacpp)を利用してQulacsのようなネイティブライブラリーをJava経由でScalaから呼び出すために色々と調査したところ、最終的にはsbtプラグインを作ることができた。

– https://github.com/y-yu/sbt-javacpp4s

実はJavaCPPのGitHubオーガナイゼーションにもsbtプラグインがあるが、調べたところこれはJavaCPPですでに利用できるOpenCVなどをScalaから使いやすくするためのものであり、新規にネイティブライブラリーをScalaから利用できるようにするものでは

元記事を表示

What are the updated features of java 13

Java 11 new features must have caught everyone’s attention, especially considering the fact that it is the second long-term support (LTS) release. Similarly, thoughts about Java 13 new features might be developing with some sort of confusion regarding long-term support. The Java 13 release date on 17th September 2019 shows that the public updates for Java 13 would end in March 2020. However, the primary focus of our discussion is on the new features in Java 13.

In addition, we shall also try to

元記事を表示

Spring Retry トラブルシューティング

## 概要
– Spring Retry で発生する様々なトラブルについての対応策を列挙する
– 今回の環境: Java 8 + Spring Boot 2.2.0 + Spring Retry 1.2.4

## コンパイルできない

以下のようなエラーメッセージが出力される。

“`
Error:(3, 44) java: パッケージorg.springframework.retry.annotationは存在しません
Error:(11, 4) java: シンボルを見つけられません
シンボル: クラス Retryable
“`

Spring Retry が導入されていないと思われるため、Spring Retry を導入すれば良い。

Apache Maven の場合は pom.xml の dependencies 要素に以下を追加する。

“`xml


元記事を表示

Spring Bootで組み込みTomcatのアクセスログを標準出力に出力する

## 概要

Spring Bootの組み込みTomcatでは、アクセスログを自動でファイルに出力することができます。
本記事ではこれを標準出力に出力させる方法を紹介します。

## 環境

– Java8
– Gradle 5.6.2
– Spring Boot 2.2.1
– logback-access 1.2.3
– logback-access-spring-boot-starter 2.7.1

## まずはアクセスログを出力する

てきとーなGETとPOSTを受けるRestControllerを書きます。

“`java
@RequestMapping(“hello”)
@RestController
public class HelloController {

@GetMapping(“”)
public String hello() {
return “Hello, world!”;
}

@PostMapping(“”)
public String message(@RequestBody String m

元記事を表示

プログラムに書くコメント各種

“`java:java
// 一行だけがコメント
/* この間の文字は
すべてコメント*/
“`

“`html:html

// コメントにはならない
/* コメントにはならない*/
“`
“`css:CSS
/* この間の文字がコメント */
“`

元記事を表示

Apache Tomcat 9 ドキュメントまとめ

## Apache Tomcat 9

Apache Tomcat 9 は Servlet 4.0 と JavaServer Pages 2.3 を実装している。

[Apache Tomcat 9 \- Documentation Index](http://tomcat.apache.org/tomcat-9.0-doc/)

> Apache Tomcat version 9.0 implements the Servlet 4.0 and JavaServer Pages 2.3 specifications from the Java Community Process, and includes many additional features that make it a useful platform for developing and deploying web applications and web services.

## Java Servlet 4.0
– [JSR-000369 Java Servlet 4.0 Specification \(Fina

元記事を表示

Visual Studio CodeのJavaで–enable-previewオプションを付ける

随分前ですが、Visual Studio Code(以降VSCode)の[Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)がJDK 13に対応しました。

元記事を表示

Javaでgzファイルを解凍するサンプル

サーバ上のgzの中身を確認する必要があるにも関わらず、手元のへっぽこWindows7 PCには7zipのようなgzに対応したソフトウェアがインストールされていない。サーバ上で解凍すると、元ファイルが巨大すぎて、手元のPCに持ってこれない恐れがある。手元で使えそうなものはJavaとEclipseだけ–ということで、Javaでgzファイルを解凍するという機会がありましたので、そのサンプルコードをQiitaに供養しておきたいと思います。

“`java
import java.io.IOException;
import java.io.OutputStream;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.GZIPInputStream;

public class GZIPUtils {
public static void unzip(Path src, Path dst) {

元記事を表示

コンストラクタ-java

**コンストラクタ**とは、newを使ってインスタンスを生成した後に**自動で呼び出される特別なメソッド**です。
コンストラクタは特別なメソッドのため、定義方法が決まっています。
**①コンストラクタ名はクラス名と同じにする**
**②戻り値を書いてはいけない(voidも書かない)**
という2つの決まりを守りましょう。
この2つさえ守れば、コンストラクタの完成です。

“`java:Sample
class Sample{
Sample(){
//インスタンス生成時に行いたい処理内容
}
}
“`

元記事を表示

Jarファイルの中身を差し替える

忘れないように覚書。
プロジェクトで必要になったので。

“`
jar -uf <差し替えるファイル・ディレクトリ名>
“`

簡単でした

元記事を表示

FlutterからJava/Objective-Cのネイティブコードを呼んでみた

# FlutterからネイティブAPIを呼びたい
[MethodChannel](https://api.flutter.dev/flutter/services/MethodChannel-class.html)を使って、FlutterからJava(Android)とObjective-C(iOS)のネイティブコード呼び出しを試してみました。

[Writing custom platform-specific code](https://flutter.dev/docs/development/platform-integration/platform-channels)に記載のサンプルコードを動かしてみたので、実際の流れをメモしておきます。

Kotlin/Swift版はこちら
[FlutterからKotlin/Swiftのネイティブコードを呼んでみた – Qiita](https://qiita.com/unsoluble_sugar/items/ae42b5faf52a491f6470)

サンプルソースはこちら
https://github.com/unsolublesu

元記事を表示

Javaでコードを書くときに意識していること

# 前置き
普段はJavaを書いているので、Javaを想定して書きます。
DDDっぽい趣向が入ってしまうのをなんとか避けつつ…(願望)

## 略称を使わず、総称を使う
例に関して、`id` ですら `identifier` と書いてしまう筆者なので少し過剰気味かもしれませんが、短く意味が伝わらない名前より、長くて意味が伝わる名前の方が良いと思います。理想は短く伝わること(できるなら1語)です、より理想に近い名前づけを意識すると良いかと思います。(`i` や `id` などデファクトスタンダードな名前に関しては例外)

“`.java
class Identifier {
String value;

Identifier(String value) {
this.value = value;
}

String value() {
return value;
}
}
“`

## 出来るだけ独自型を使用する
`String` や `int` など言語にすでにある型は独自アプリケーションの概念を表現するには向いていないように感じます。よく変数

元記事を表示

Spring AOPの技術によるシステムログ出力を行う

### Spring AOPとは
 Spring Frameworkにおいて、DI(Dependency Injection、依存性注入)と並び重要な根幹技術となっているのが「AOP」というものです。
 AOPは、「Aspect Oriented Programming(アスペクト指向プログラミング)」の略です。アスペクトというのは、一般に「横断的関心事」と呼ばれるものです。

### 環境
– spring
– java8
– Log4j

### Spring AOPのアノテーション用語
1.@Aspect
  @Aspectをクラスにつけることで、そのクラスはAspectとして認識されます。
2.@Pointcut
  横断的な処理を挿入する場所(メソッド)を指定する。
3.@Before
  対象のメソッドの処理前に実行されるAdviceです。
4.@After
  対象のメソッドの処理結果に関わらず、必ず実行されるAdviceです。
5.@AfterReturning
  対象のメソッドの処理が正しく終了した場合にのみ実行されるAdviceです。
6.@AfterThro

元記事を表示

private,protected,privateのアクセス権-java

privateの代わりにprotectedを用いると、
クラス内とサブクラスからのみアクセスを許すフィールドを作ることができます。

####「public」「protected」「private」「デフォルト(何もつけない)」アクセス権について
**・public**: どこからでもアクセス可能
**・protected**: そのクラスと子クラス内からのみアクセス可能
**・private**: そのクラス内からのみアクセス可能(クラス外からのアクセスにはゲッター&セッターが必要)
**・デフォルト修飾子**:ある要素に何も指定しなかった場合、その要素のアクセスはデフォルトとみなされ、同じパッケージ内のクラスから利用可能になります。

| アクセス権| public| protected | private |デフォルト|
|:————|:———-:|:——:|:—:|:—–:|
| クラス内   | ○ | ○ |○|○
| サブクラス内 | ○ | ○

元記事を表示

OTHERカテゴリの最新記事