あけましておめでとうございます。
本日より2022年になりましたね。

本年も相変わらず、Hackingネタだったり、
筆者の知的好奇心に刺さるネタに取り組みながら、
手順などをご紹介していければと思います。

引き続きOSManiaXをよろしくお願いします。

ご挨拶だけでは物足りないので、新年一発目の記事も書いていきましょう。
今回は今更ながらのJavaプログラミングネタ。

Javaと言えばクロスプラットフォームな開発言語+実行環境であり、
macOSXからLinux、もちろんWindowsでも動くアプリケーションが開発可能です。

Oracleが買収したりでライセンス関連がややこしいですけども、
結局はOpenJDKをビルドしたものを各ベンダが顧客を取り込もうとして、
ビジネス用途でディストリビューとしているのが背景にありますね。

今やプログラミング言語としてはAI関連のフレームワークが豊富なPythonが
大人気ではありますが、こうやってクロスプラットフォームでGUIアプリが
しっかり作れるJavaもまだまだ捨てたもんじゃないと思います。

最近JavaのLog4jの脆弱性が発表になりましたが、今回はWEBアプリケーションではなく、
Java+Swingで簡単なGUIアプリケーションの作り方を紹介します。

まずはOpenJDKをインストールしましょう。

まだインストールしてない場合は以前の記事を参考にインストールしてみてください。


Java+Swingでコーディングする

JavaのGUI開発フレームワークにはSwing、AWT、JavaFXとありますが、JavaFXだけは
OpenJFXとはみ出す形になってしまいましたね。

今回はSwing、AWTのフレームワークを使ってみました。

さて、コーディングしていきましょう。
今回のコードは以下でウインドウとラベル、アイコン、ボタンを表示させるだけのものです。


import javax.swing.*;
import java.awt.Container;
import java.awt.BorderLayout;
//
public class App extends JFrame{
    public static void main(String[] args) throws Exception {

        App appWindow = new App("");
        appWindow.setVisible(true);
    }
	App(String title){
		setTitle("OSManiaX");
		setSize(640,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ImageIcon icon = new ImageIcon("kadomatsu_illust_1399.png");
		JLabel label1 = new JLabel("A Hacking New Year 2022!!");
		JLabel label2 = new JLabel(icon);
		label2.setIcon(icon);
		JButton button1 = new JButton("おみくじを引く");
		JPanel p1 = new JPanel();
		JPanel p2 = new JPanel();

		p1.add(label1);
		p1.add(label2);
		p2.add(button1);

		Container contentPane = getContentPane();
		contentPane.add(p1,BorderLayout.CENTER);
		contentPane.add(p2,BorderLayout.SOUTH);
	}
}

Javaのプログラムの実行の仕方は三通り

ちなみにJavaプログラムの実行方法は3通りあります。

1)コンパイルせずに実行する方法(※デバッグ用)

上記をApp.javaというファイル名で保存、「java App.java」で実行可能です。
簡単に動作テストしたい場合ですね。

$ java App.java

2)コンパイルしてクラスファイルを実行する方法

javacコマンドでコンパイルするとクラスファイル(App.class)が生成されます。
その生成されたクラスファイルを実行する方法です。

クラスの拡張子は指定しないで実行可能です。

$ javac App.java
$ java App

3)Javaの実行ファイルを生成し、実行する方法(※配布用)

GUIアプリならばダブルクリックでも実行できる方法です。

よくあるjar形式のファイルの生成して、実行する方法です。
Windowsで言えば.exeみたいなものだと思ってください。

まずは2)の手順でクラスファイルを生成します。

$ javac App.java

マニフェストファイルを作成します。

$ vi manifest.mf

マニフェストファイルの中身は以下のように最初に起動するクラス名を記述します。
文の最後は改行を含めます。

Main-Class : App

最後に以下コマンドでApp.jarファイルの完成です。

$ jar -cvfm App.jar App.class manifest.mf

これでmacOSXでダブルクリックで実行可能になります。

Windowsの場合日本語表示には文字コードに注意

尚、Windows環境の場合、文字コードはANSI(SJIS)で保存しないと日本語箇所が文字化けします。
macOSX、Linuxの場合の文字コードはUTF8で保存します。


まとめ

というわけで、新年初のブログ初めの今回はクロスプラットフォームな開発環境である
Javaを使っての簡単なGUIプログラミングについてのご紹介でした。

この記事でJavaプログラミングやってみようかなというきっかけにでもなれば幸いです。

それでは今年も良きHackingYearとなりますように!

※この記事はM1MacBookProで布団の中から入力しました笑。
※上記のJavaコーディングも同じくM1MacBookProで行っています。


謝辞

門松のイラストはこちらを使わせていただきました。
https://illust8.com/contents/1399