Windows上でアプリケーションを作る勉強をしようと思っています。

Javaにすべきでしょうか?C#にすべきでしょうか?

「Java言語はクライアントアプリ開発のメジャーになれるか?」
http://headlines.yahoo.co.jp/hl?a=20041009-00000 …

を読むと、Javaの未来もバラ色に見えます。
メリットとディメリットを教えて頂けないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (7件)

> これは、やはり実行速度の問題でしょうか?



速度はあまり関係なかったかな。(個人的にはあまり速度差は気にならなかった)
ただC#はJavaよりも言語としてよく出来ていると思いました。Java同様分かりやすい言語でありながら、プロパティ、インデクサ、デリゲート、列挙体などの有能な機能が追加されています。

Javaは言語に備わっている機能がシンプルな分だけプログラマがソースコード上で不十分な点を補わなければいけなかったのですが、C#は言語自体の機能が多いのでその分簡潔で見やすいソースが書けます。(もっとも、やってることの本質的な部分は両者とも同じですが)

ただ、言語そのものとしてはC#の方が上でも、実際のプログラムで言語から呼び出して使える機能(ライブラリ)はJavaの方が現時点では上なので、悩ましいところです。

クライアントアプリを作るための言語としては、JavaでもC#(.NET Framework)でも、OSとは別に実行環境を整えて仮想マシン上で動かすという点では同じなので、シェア争いの点では今のところ両者互角ですが、数年後には Windows に .NET Framework 実行環境が標準搭載されるようになって、Javaは次第に追いやられていくのではないかというのが私の勝手な予想です。

Javaはやはりサーバー側アプリや携帯電話用アプリなどの分野で活躍していくのではないかと。

この回答への補足

> Javaはやはりサーバー側アプリや携帯電話用アプリなどの分野で

おっしゃるとおりのような気がしてきました。ありがとうございます!

補足日時:2004/10/14 21:39
    • good
    • 0

> 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#に乗り換えたので

これは、やはり実行速度の問題でしょうか?

補足日時:2004/10/10 18:48
    • good
    • 0
この回答へのお礼

ひとつ気になっていたのは、フリーウェアでもシェアウェアでも、普通のソフトウェア会社が作るパッケージ商品にしろ(一太郎、ホームページビルダー、etc.)、いま私が目にするWindows向け製品は、そのほとんどが MSの Developer Studio で作られたモノだということです。

これらはC++で作られているのだと思うのですが、これらは 将来 C#になっていくのかな、と以前は思っていたのです。

でも、上記の記事をみて、Javaがこの分野にも出てくるのかな、と思いました。

お礼日時:2004/10/10 18:55

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がヘルプとして参照できるというのはいいですね。なんか、美しいです。

補足日時:2004/10/10 18:44
    • good
    • 0

仕事で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さんはどのような環境でしょうか?

もし差し支えなければ教えて頂けるとうれしいです。

補足日時:2004/10/09 22:43
    • good
    • 0

Windowsだけで動かすためのアプリケーションを作るなら、断然 C# でしょう。


逆に Windows 以外の OS でも動くアプリケーションを作るなら、Java の方が有利です。

C# は一応 Windows で実行することが前提となっているので、Windows にしかない OS 固有の機能も扱いやすく、GUI も Windows のネイティブのものをそのまま使えます。
ソースをコンパイルすると直接exeファイルができるので、プログラムの実行も簡単です。

Java は最初から複数の OS で動かすことが前提になっているので、機能もある程度限られます。GUIはネイティブのものを使わず全て自前で描画するので、重いしちょっと汚いです。
コンパイルしたプログラムはJARというアーカイブにまとめて、それをコマンドから起動することになります。

言語に備わっている機能は、今のところ Java よりも C# のほうが上です。Javaはシンプルですが、逆に物足りなく思う点も多いです。
ただ Java のほうがウェブアプリケーションの分野で圧倒的に普及しているので、その分情報等は得られやすいと思います。クライアントアプリの分野では普及率はどっちもどっちでしょう。

この回答への補足

ありがとうございます。

断然 C#、なのですね。
Javaのメリットとしては、OS互換がパーフェクト、くらいでしょうか。

補足日時:2004/10/09 18:08
    • good
    • 0

#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アプリケーション開発者ほど、驚いたものだ。」と該当ページに書いてあったので、サクサク動くのかなと思っていました。

補足日時:2004/10/09 16:58
    • good
    • 0

デメリットは、ブラウザの設定で動かせなくしてしまうことが出来ます。


すべての人が使えるようにするなら、C#でしょうねー。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング