質問: ### 前提・実現したいこと eclipseを導入したのですが、プロジェクトの作成と実行後の実行構成が表示されてしまう点で理解出来ない点があります。 ### 発生している問題・エラーメッセージ プロジェクトの設定はプロジェクトメニューからプロパティ→リソース→テキスト・ファイルのエンコード→その他をONにし、UTF-8を選択→新規テキスト・ファイルの区切り文字でその他をONにし、UNIXを選択しました。 Windowswを使っているのですが、基本設定はこれでよろしいですか? もう一点は、 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } のコードを書いた後、実行を押すと、実行構成というものが出てきてしまいます。 フィルター入力の下に、 Appletomcat,eclipseapplication,eclipseデータツール、Gradleプロジェクト,Grunt,Gulp,HTTPプレビュー,J2EEプレビュー,javaアプリケーション,javaアプレット,jUnit,jUnitプラグイン・テスト,Mavenビルド1,Node.jsアプリケーション,OSGiフレームワーク,RAPアプリケーション,RWTアプリケーション,SWTBotテスト,Test Recorder,XSL,タスクコンテキスト・テスト,タスクコンテキスト・プラグイン・テスト,汎用サーバー,汎用サーバー(外部からの起動)など表示され、右側のウィンドウにはこのダイアログから起動設定を構成すると出ています。 適当に選択するのは嫌なので、もしも分かる方がいらっしゃいましたら、教えていただきたいです。
回答: > > 基本設定はこれでよろしいですか? > > > eclipse上のみでソースを作成・編集・コンパイル・実行する分にはどの文字エンコードを選んでも構いません。 UTF-8を選んだ場合、ソースファイルをeclipseを起動せずにちょっと見たいといった場合、Windows上でメモ帳などを用いて開くと日本語で書いたコメントや文字列などは文字化けのため読めないこともあり得ます。日本語のWindowsでのデフォルトの文字エンコーディングはUTF-8ではなくWindows-31Jだからです。Windows上からでも閲覧しやすくするなら文字エンコーディングとしてWindows-31Jを選んでおくのも一つの選択肢ではあります。 一方LinuxなどではUTF-8が標準のエンコーディングになっていることも多く、色々な環境で扱いやすいという意味ではUTF-8はポピュラーな選択と言えるでしょう。例えWindowsであってもUTF-8を選択しているプログラマーも多いと思います。ですのでUTF-8は「少なくとも悪い選択ではない」と言えると思います。 文字のエンコーディングの違いについては何を選ぶにせよやることに応じて何かのトラブルが起こると考えた方がいいかも知れません。世の中で複数のエンコーディングが使用されている以上、日本語を扱うならその場に応じて適切な考慮をすることが必要です。単にeclipseのプロジェクトのエンコーディングをUTF-8にすれば解決するといった単純な問題ではないのです。ネットワーク通信、DB、ファイル等々場面によって異なるエンコーディングが普通にでてきます。その時々に応じた配慮をすることが必要なんですね。 なおJavaプログラミングをする上では「Javaの言語仕様上は文字はUTF-16に決まっている」ということを覚えておくとよいと思います。ソースファイルが例えWindows-31Jであってもeclipseのプロジェクト設定をWindows-31Jにしておけば、それを正しくコンパイルすることができて(その結果Windows-31J->UTF-16に変換され)、Javaプログラム内部では常にUTF-16として扱われ、外部に出力する際に環境に応じて適切にエンコード変換が行われ(例えばWindows上で実行しているならWindows-31Jに変換されて)出力されると考えてください。文字のエンコーディング変換についてはJavaに限らずいかなる言語で書いていても「入力・プログラム内部・出力」でデフォルトでどのようなエンコーディングが用いられるかやデフォルトと異なるエンコーディングを用いるためにはどうしなくてはならないかの知識が必須になると思います。 > > 実行構成 > > > 一般ユーザーがOS上での対話セッション(要するにログインしている環境)で直接起動して利用するようなものをスタンドアロンアプリケーションと呼びます(相当おおざっぱな説明ですが...)。ご質問にあるHelloWorldプログラムはそういうものです。これをJavaで作成するなら実行構成はJava Applicationを選びその構成の設定画面でmainメソッドを定義したクラスを指定しておいてください。もちろんスタンドアロンアプリケーションでないものの場合は「それに応じた正しい実行構成」を選ばなくてはなりません。Javaのスタンドアロンアプリケーションでないものとはどんなものか・・・それはそういうものを作るときに調べてみてください。