Help us understand the problem. What is going on with this article?

CUIからJavaを実行する

記事作成の経緯

当方、Robert Simmons, Jr.の著作「Java™️魂」を学習しようと思ったのですが、
サンプルコードの実行がAntによるものでした。

Antの勉強をするにしてもコマンドオプションの設定など、
Javaのコマンドについての知識がないと最低限の学習も厳しいなと。
そんな感じでこの記事を書くことにしました。

第1章 Javaアプリケーションの作成に必要な作業

Javaアプリケーションを作成していると、主に以下の作業が発生します。
※今回はあくまで「Javaコマンド」について学習したいので自動テストなどは除外します

  1. コードを書く
  2. コンパイルしてクラスファイルを生成する
  3. 実行する
  4. JARファイルなどにアーカイブする
  5. javadocを生成する

以降の章では、上Javaコマンドを使用して上記の作業を実際に行い、
各コマンドについて解説していきたいと思います。

実際に手を動かすという方は、
こちらからApache Commonsのcommons-lang3-x.xx.jar
をダウンロードしておいてください。

第2章 Javaのコードを書く

当記事では、以下のサンプルを使ってJavaアプリケーションの実行を学びます。
なお、コマンドの説明用に以下の構成にしているだけなので、
ソースコードとして綺麗とは言い難いです。

サンプルコードでは、/java-sample直下に以下のようなフォルダ構成があるとします。
※ルート直下で作業すると危険なので、任意のディレクトリを切って作業した方が安全です

スクリーンショット 2020-05-25 17.00.46.png

UseCommons.java
package com.example.app;

import org.apache.commons.lang3.StringUtils;

public class UseCommons {
    // javaコマンドにUseCommonsを指定して実行した際に実行される処理
    public static void main(String[] args) {
        System.out.println(CommonsHelper.returnNgStrIfHasProbrem(null));
        System.out.println(CommonsHelper.returnNgStrIfHasProbrem(""));
        StrFactory strFactory = new StrFactory();
        System.out.println(CommonsHelper.returnNgStrIfHasProbrem(strFactory.sayHelloWorld()));
    }
    // インナークラスを定義した場合のコンパイル結果を見るためのヘルパークラス
    static class CommonsHelper {
        //CommonsのAPIを利用して、文字列が空、もしくはNullの場合に”NG"を返却する
        static String returnNgStrIfHasProbrem (String target) {
            if (StringUtils.isEmpty(target)) {
                return "NG";
            } else if (StringUtils.isBlank(target)) {
                return "NG";
            }
            return target;
        }
    }
}
StrFactory.java
package com.example.app;

public class StrFactory {
    public String sayHelloWorld() {
        return "Hello World!";
    }
}

記事がいささかボリューミーになってきたので、以降は記事をリンクにして分割しました。

第3章 ソースコードをコンパイルする : javac

第4章 コードを実行する : java

第5章 成果物をアーカイブする : jar

第6章:Javadocを生成する : javadoc

おわりに

以上、長々とJavaのコアツールについて書いてきましたが、これらの記事を読めば
最低限、Javaのコーディングから成果物の作成に関してはターミナルなどのCUIから
実行できるようになるのではないかと思います。

最後までお読みいただき、ありがとうございました。

maple_syrup
主にJavaを使用してWebアプリの開発に携わっています。
pure-system
大手生命保険会社各社をはじめ、自治体、大手企業など、日本を代表する企業様のIT化を推進・支援しています。
https://www.pure-system.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away