Windows上でアプリケーションを作る勉強をしようと思っています。
Javaにすべきでしょうか?C#にすべきでしょうか?
「Java言語はクライアントアプリ開発のメジャーになれるか?」
http://headlines.yahoo.co.jp/hl?a=20041009-00000 …
を読むと、Javaの未来もバラ色に見えます。
メリットとディメリットを教えて頂けないでしょうか?
No.7ベストアンサー
- 回答日時:
> これは、やはり実行速度の問題でしょうか?
速度はあまり関係なかったかな。(個人的にはあまり速度差は気にならなかった)
ただC#はJavaよりも言語としてよく出来ていると思いました。Java同様分かりやすい言語でありながら、プロパティ、インデクサ、デリゲート、列挙体などの有能な機能が追加されています。
Javaは言語に備わっている機能がシンプルな分だけプログラマがソースコード上で不十分な点を補わなければいけなかったのですが、C#は言語自体の機能が多いのでその分簡潔で見やすいソースが書けます。(もっとも、やってることの本質的な部分は両者とも同じですが)
ただ、言語そのものとしてはC#の方が上でも、実際のプログラムで言語から呼び出して使える機能(ライブラリ)はJavaの方が現時点では上なので、悩ましいところです。
クライアントアプリを作るための言語としては、JavaでもC#(.NET Framework)でも、OSとは別に実行環境を整えて仮想マシン上で動かすという点では同じなので、シェア争いの点では今のところ両者互角ですが、数年後には Windows に .NET Framework 実行環境が標準搭載されるようになって、Javaは次第に追いやられていくのではないかというのが私の勝手な予想です。
Javaはやはりサーバー側アプリや携帯電話用アプリなどの分野で活躍していくのではないかと。
この回答への補足
> Javaはやはりサーバー側アプリや携帯電話用アプリなどの分野で
おっしゃるとおりのような気がしてきました。ありがとうございます!
No.6
- 回答日時:
> Javaのメリットとしては、OS互換がパーフェクト、くらいでしょうか。
パーフェクトというより、どのOSでも問題なく動かせるだけというべきかもしれません。どのOSでも使える機能しか提供されていないので、そうでない機能はJavaの中で何とかする必要があります(GUIが代表例)。
逆にC#はWindowsが前提になっているので、Windows固有の機能も大抵使えます(Application Dataフォルダの位置を取得するとか)。ただ、歴史が浅い分 機能や情報が不足している点は否めませんが(標準ライブラリでは音楽を鳴らすこともできない)。
ちなみに、C#で(というか .NET Frameworkで)作ったプログラムでも、実行環境を整えればWindows以外のOSでも動きますし、Java同様無料で開発環境を整えることも可能です(JavaのEclipseに対してC#にはSharpDevelopがあります。もっとも、EclipseでC#の開発も一応できるみたいですが)。
言語としてはC#よりJavaのほうが簡単で覚えやすいと思います。ただ歴史が長い分Javaは「負の遺産」も引きずっており、それらを解消するために新しく作られた言語としては C#は洗練された言語です。
(別にJavaが駄目だと言っているわけじゃないですが、私はJavaに耐えかねてC#に乗り換えたので)
この回答への補足
参考になる情報、大変ありがとうございます。ちょっと迷ってきました・・・
> 私はJavaに耐えかねてC#に乗り換えたので
これは、やはり実行速度の問題でしょうか?
ひとつ気になっていたのは、フリーウェアでもシェアウェアでも、普通のソフトウェア会社が作るパッケージ商品にしろ(一太郎、ホームページビルダー、etc.)、いま私が目にするWindows向け製品は、そのほとんどが MSの Developer Studio で作られたモノだということです。
これらはC++で作られているのだと思うのですが、これらは 将来 C#になっていくのかな、と以前は思っていたのです。
でも、上記の記事をみて、Javaがこの分野にも出てくるのかな、と思いました。
No.5
- 回答日時:
Javaは若干経験がありますが、C#の経験はありません。
なのでJavaに関してだけ、私の意見を。
おそらく同じようなアプリケーションを作った場合、Javaの方が動作が鈍いでしょう。
それと今Javaはサーバーサイドの情報は多いですが、クライアントサイド(AWTやSwing)の情報はあまり多くありません。何か分からなくなったとき、ある程度自分で解決できる必要があります。
>ところで、eclipseはもたつくのですか?
マシンパワーにもよりますが、最近のeclipseは十分早いです。(P4 2.3G Memory512Mなら十分)
というのもeclipseはGUIの部分はJavaではなく独自のSWTというプラットホーム依存のツールを使っているからです。
このツールは他のアプリケーションでも使うことが出来るので、AWTの貧弱さやSwingの重さに耐えられなかったら、使ってみてください。
(プラットホーム依存ですが、WindowsとLinux向けにはライブラリが提供されています。)
>Javaの場合、どういう開発環境がヘルプが使いやすいのでしょうか?
JavaはライブラリのマニュアルがHTMLで出来ているので、お使いのブラウザで見ることが出来ます。
これはソースに特殊な形のコメントを付け、JDK(Javaの開発ツール)に付属しているJavadocというツールで自動生成します。もちろん自分で作ったプログラムにも同じ形式でコメントをつければ、マニュアルを作成することができます。
eclipseなどでは、これをヘルプとして見る機能が付いてます。
最後にJDK、Eclipse(SWTも)、多くの高機能なライブラリが無料で使えると言うのがとても魅力的です。
個人で勉強するのならとても重要な要素だと思います。
この回答への補足
みなさまのおかげで、事情が少しずつ分かってきたような気がします。
> クライアントサイド(AWTやSwing)の情報は
> あまり多くありません。
たしかに、そう思います。特に、AWTの分かりやすい本を探すのには苦労しました。
> eclipseはGUIの部分はJavaではなく
> 独自のSWTというプラットホーム依存のツールを使っているからです。
そうだったのですか!だから速いと言われているのですね。自分が作ったプログラムを動かすためには、SWTの有無を確認しないといけないわけですね。
javadocでつくったマニュアルをeclipseがヘルプとして参照できるというのはいいですね。なんか、美しいです。
No.4
- 回答日時:
仕事でC#とJavaを少し使いました。
今後もどっちの仕事も待ちかまえてますが。C#は実質的に一ヶ所から仕事がきているだけで、Javaの方がはるかに量としては多いようです。
クラスなんかは大分違いますが、言語的には似たようなものです(笑)
C#のデメリットはWindowsの.NETのみという点でしょうかね。現実的には、開発、実行ともWindowsのみです。
あと、個人的にはVisual Studio系のヘルプは嫌になるほど見づらいと思ってます。C,C++,VB,C#と使ってますが。
似たようなことをJavaで調べるのとC#で調べるのとでは大分違います。私だけかな?
メリットは逆にいろいろな物が一つしかないということです。
開発ツールも、WebアプリつくるのでもIIS限定とか。
Javaのメリットはプラットフォームを選ばないこと、実際に使われているのはJavaの方が多いことでしょか。
デメリットはツールやらなにやらでいろいろとバリエーションがあることでしょうか。
あと、Windowsに限定すれば汎用のJavaの方がいろいろと劣りますね。
個人的にはJavaの方が好きです。
勉強ならJavaを薦めます。すべきとまではいいませんけど。
あと、Javaなら無償で充分な環境そろいますし。
C#はやはりVisual Studioの購入が必要でしょう。
あと、C#は.exeができても実行には.NET Frameworkが必要になりますから、JVMが必要なJavaとあまり変わりません。
それに.exeの実質的な中身は中間コードですし。
古いWindowsを含めて実行させるという意味だと、C#のexeはかなり曲者です。
この回答への補足
大変参考になります。Javaにしようかと思います。
> Visual Studio系のヘルプは嫌になるほど
Javaの場合、どういう開発環境がヘルプが使いやすいのでしょうか?terra5さんはどのような環境でしょうか?
もし差し支えなければ教えて頂けるとうれしいです。
No.3
- 回答日時:
Windowsだけで動かすためのアプリケーションを作るなら、断然 C# でしょう。
逆に Windows 以外の OS でも動くアプリケーションを作るなら、Java の方が有利です。
C# は一応 Windows で実行することが前提となっているので、Windows にしかない OS 固有の機能も扱いやすく、GUI も Windows のネイティブのものをそのまま使えます。
ソースをコンパイルすると直接exeファイルができるので、プログラムの実行も簡単です。
Java は最初から複数の OS で動かすことが前提になっているので、機能もある程度限られます。GUIはネイティブのものを使わず全て自前で描画するので、重いしちょっと汚いです。
コンパイルしたプログラムはJARというアーカイブにまとめて、それをコマンドから起動することになります。
言語に備わっている機能は、今のところ Java よりも C# のほうが上です。Javaはシンプルですが、逆に物足りなく思う点も多いです。
ただ Java のほうがウェブアプリケーションの分野で圧倒的に普及しているので、その分情報等は得られやすいと思います。クライアントアプリの分野では普及率はどっちもどっちでしょう。
No.2
- 回答日時:
#1さんのはWeb上のアプレットの話ですね。
業界の現場の状況を見ますと、まあ私の知ってる範囲だけですけど、Javaの仕事はごろごろありますが、C#で何か作ったなんて話は正直聞いたことがないです。
まあJavaを使った仕事は現場ではクライアントアプリケーションよりはサーブレットのほうがずっと多いですけどね。
Javaの強みはやはり環境を選ばないことですね。
unixでもMacでもかかってこいですからね。
C#がでてきたころはいろいろ言われましたが、現状を見るとJavaのほうが圧倒的に使われていますし、どう見てもJavaの勝ちでしょう。
デメリッとは。。。パフォーマンスがやや低いことでしょうか。これもマシン性能がどんどん上がっている今ではとるにたらないことかも知れません。eclipseのような巨大アプリはさすがにいろいろともたつく局面が多いので気になりますが。。。
ちなみに、Javaに力を入れているのはIBMです。下手すると本家のSunに取って代わるんではないかと思わせるくらいの熱の入れようです。自社製品にどんどんJavaを導入しています。WebSphereのツールやDB2のGUIなどは皆Javaになっています。eclipseだってIBMですからね。
というわけで、どう考えてもJavaを選ぶのが正解です。
この回答への補足
ありがとうございます。
Javaが良いのですね。#3さんとのコメントの間で少し混乱しています。。。
現在のところ、Windows 上で動かすことしか考えていませんが、もし、C# と Java が Windows上でそれほど違いがないのなら(作成の手間や実行速度)Javaを勉強した方がいいのかな、と思いました。
目的としては、Windows上で動くフリーウェアを将来作ることが出来ればと思っています。
ところで、eclipseはもたつくのですか?「いまでは周知となったことだが、数年前は誰もが驚くと共に信じられなかっただろう。その理由は、まるでWindowsネイティブアプリケーションのような、豊富なウィジェット利用にある。Java上での開発事情を知るJavaアプリケーション開発者ほど、驚いたものだ。」と該当ページに書いてあったので、サクサク動くのかなと思っていました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaでWebページ作成 7 2023/07/21 21:09
- IT・エンジニアリング バックエンドエンジニアに転職 2 2022/04/07 00:51
- C言語・C++・C# C#の基本文法が詳しく書かれている教科書的な本ありますか 2 2023/02/11 03:48
- IT・エンジニアリング FORTRAN、COBOL、C、Java、C++とか誰が作ったのですか?言語習い使いまた出て、キリが 4 2023/05/06 23:11
- IT・エンジニアリング c言語とjavaの需要について 3 2022/06/23 22:59
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- Java 質問です。 Java言語を勉強出来る機会がありますが、プログラマーに将来性はあるのでしょうか? AI 3 2023/05/25 16:54
- C言語・C++・C# [至急]Project Euler:#13Large sum コード、入力、出力、解説 1 2022/09/24 02:30
- Java javaでパソコンの内臓カメラや内臓マイクの映像や音をリアルタイムで映し出した 1 2022/07/09 14:02
- C言語・C++・C# [至急] Project Euler:#16 Power digit sumコード、入力、出力、解説 3 2022/09/24 02:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaのジェネリックスでTとEの...
-
JAVA言語をマスターするとホー...
-
Javascriptで出来ること
-
Java,Javaスクリプト、エクリプ...
-
JAVAとは何なんでしょうか?
-
正規表現について質問です。 カ...
-
JSP・サーブレットとphpどちら...
-
java ミラーラビン法
-
vba クリップボードクリアにつ...
-
Pythonを勉強する道のり
-
Eclipseソース開発画面の行番号...
-
UWSCが、動作環境の違いで動か...
-
大学の授業のプログラミング、...
-
サーブレットで電卓をつくる
-
WindowsでのOvjective-C開発環境
-
スキル高めのIT技術者になぜ左...
-
Javaでのエラーについて
-
gitでバージョン指定してダウン...
-
今年30歳、業務未経験がプロ...
-
エクセルVBAがMACで動かない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPファイルで生じるエラーをど...
-
javaのジェネリックスでTとEの...
-
javaでの#if 0 #endif文
-
正規表現について質問です。 カ...
-
PythonやJavaScriptのように実...
-
データベースの形式を認識でき...
-
VScodeのターミナルの文字化け...
-
サーブレットとPHPの違い
-
!と~について
-
JSP・サーブレットとphpどちら...
-
Pure Javaとは?
-
同人ゲームについて
-
javaの堅牢性とは
-
java、又はjavascriptでマシン...
-
javaアップレットとjavascript...
-
Javaでクライアントアプリを作...
-
現在のC/C++とjavaの長所短所に...
-
いろいろなjavaの違い
-
形態素解析ツール「茶筅」をJAV...
-
C, C#, C++, Javaに関していく...
おすすめ情報