大学でjavaプログラミングを習ったのですが。

具体的にjavaで何ができるのかがよく理解できていません。
javaではいったい何ができるのできるのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/02/07 02:15:30
  • 終了:2008/02/11 22:40:15

ベストアンサー

id:pyridoxin No.8

pyridoxin回答回数3ベストアンサー獲得回数12008/02/11 01:53:53

ポイント25pt

「javaではいったい何ができるのか?」という問いは二つに分けられる。

  1. プログラムは何ができるのか?
  2. Javaだけにできることは何か?

プログラムは何ができるのか?

プログラムというのはコンピュータに命令を与える指示書です。だからコンピュータにできることは基本的になんでもできます。人工知能なんていうのはまだ理論的に確立されていませんがそのうちできるかもしれません。

Javaだけにできることは何か?

人間にとってはJavaとCは違います。では機械(CPU)にとっては両者は違いがあるのでしょうか?

実は最終的に機械語に変更されます。というのもJavaとかCとかいう言語は「人間」にわかりやすく機械語を作るために作られたものです。(詳しく知りたいのであればアセンブラ、コンパイラを調べれば良いでしょう)

だからJavaだけにできることは根源的には存在しません。プログラムができること=Javaができることです。

現実的に何ができ、何が不向きなのか

利点(できること)

OSに依存しない(Cは依存する。)

安全である。(ただしく書けば、「悪いこと」ができない)

みんな使っている(助言やアドバイスが得られやすい。)

欠点(不向き)

単純なことにも大げさになりがち(PerlやRubyのシンプルさには負ける→webアプリケーション開発では致命的)

遅い(最速化されたC++に勝てない(詳しくはガーベージコレクションとJVMを参照))

id:Tomato-360

欠点の単純なことにも大げさになりがちというのは自分で作ってても感じました。

文字を表示するだけでも結構長く書かないとだめですからね。

利点のもみんな使っているというのは学ぶ上で結構有利ですね。

2008/02/11 22:37:41

その他の回答(7件)

id:ffmpeg No.1

ffmpeg回答回数1202ベストアンサー獲得回数92008/02/07 02:30:07

ポイント10pt

OSに依存しないワープロとか。open officeね。

id:Tomato-360

そういえばopenofficeがjavaで作られているのは聞いたことがあります。

OSに依存しないというのはいいですね。

2008/02/11 22:27:11
id:Lord_of_Kamaboko No.2

Lord_of_Kamaboko回答回数1ベストアンサー獲得回数02008/02/07 07:45:48

ポイント25pt

ほかのプログラミング言語と同じく、いろんなことができます。

http://ja.wikipedia.org/wiki/Java曰く、

>現在、Javaの技術は、情報技術のローエンドからハイエンドまで幅広く使われている。 組み込みシステムや携帯機器(携帯電話・PHSやPDA・スマートフォン等)のシステムから、企業の情報システムを担う大規模なサーバやスーパーコンピュータまで、非常に多くの分野で活用されている。


Javaの理念は、プラットフォーム(使用しているCPU、OSなどのいわゆる実行環境)に依存しない動作です。そのため、開発環境と実行環境が異なっていても比較的スムースに動作し、また実行環境ごとに別のコンパイルやコーディングをする手間も比較的少なくなります。

国内では各種認定試験にJavaを使うものも多く、それに見合うだけの需要があるということなのでしょう。そういう意味では、資格の取得にも役立ちますね。


「プログラミング言語で何ができるのか」というと、理論的にはたいていどの言語も同じことができます。しかし、実装の面ではそれは現実的ではなくて、だからこれだけたくさんのプログラミング言語が存在するのですが、Javaは上であげたプラットフォームに依存しない動作のほかに

・オブジェクト指向に基づいて設計されている

・構文がCと似ている

などの個性を持っています。(関数型プログラミング言語を除けば)いまのプログラミング言語の中では、まあかなり一般的な部類で、普通のことが普通にこなせる言語だと思います。

id:Tomato-360

普通のことが普通にこなせる言語ですか、なるほど。

構文がCと似ているということはCを学ぶ上で役に立つんでしょうね。

2008/02/11 22:29:45
id:samasuya No.3

samasuya回答回数315ベストアンサー獲得回数112008/02/07 09:03:56

ポイント25pt

回答あるかもしれませんが、たとえば、このはてなのシステムだってJavaで作ろうと

思えば、作れます。


実際にJavaが使われているシステムというところでは、

携帯ゲームもJavaですし、企業の会計システム、WEBシステムは、PHPと並んで

Javaが多いですね。

Javaは、プログラミング言語で、単なる手段にしかすぎないので、

使い方次第だと思います。


大学に通われるのに、徒歩、バス、タクシー、電車、飛行機、自家用ヘリという手段が

あって、どれが一番自分にとって最適か?という質問と似てると思います。


どの手段を使っても大学に到着しますけど、企業の場合は、

コスト、時間的に何が良いのか?を比較してどの手段を使うかを決めますが、

Javaは、割といろんな機能が備えられているので、採用されることが多い、

という感じです。

自分が関わったところでは、WEBのショッピングカート、旅行予約システム、

WEBの販売管理システム辺りで使ってました。

id:Tomato-360

使い方次第ですか。はてなのシステムが作れるというのは驚きです。

やはりWEBに強いんですね。

2008/02/11 22:30:47
id:yo-net No.5

yo-net回答回数266ベストアンサー獲得回数212008/02/07 14:19:07

ポイント25pt

勘違いをしていそうなので、勘違いから手直しさせてください。

JAVAは仮想端末を想定して、仮想端末で動くプログラムです。

この仮想環境を各端末に作ってあげると動くようになります。

つまりJAVAは手段ではなくシステムの考え方です。

基本的にはWindowsもLinuxもJAVAは同じ記述で動きます。

これは丁度PDFに似ています。

JAVAで何が出来るかというと仮想端末で出来るすべての事が出来るといえます。

今使われている理由の一番はCに近いオブジェクト言語であると言う事ではないでしようか。

仮想端末があれば特にブラウザが無くても動きます、Javaappletといいます。

ただしブラウザを利用する事に限定する場合必ずしも一番良い言語とは言いません。PerlとかPHPなどがあります。

そうそうjavaのライバルとしてC#があります。

最後になりますが回答としてJAVAは何でもできるが、インターネットを利用したDB関連は得意分野だと思います。

id:Tomato-360

JAVAはシステムの考え方ですか。言語として習っていたのでそういうことは思いもしませんでした。

仮想端末でできるすべてのこと、すべてというのはまた幅が広いですね。

2008/02/11 22:33:31
id:yo-net No.6

yo-net回答回数266ベストアンサー獲得回数212008/02/07 14:27:36

5で回答したものですが、C言語の部分でCではなくC++の間違いです。

ついCとC++の開発をしていたので略してしまいました。

Cはオブジェクト指向ではありません、C++がオブジェクト指向でJAVAに近いです。というかJAVAがC++に近いです。

id:DASM No.7

DASM回答回数6ベストアンサー獲得回数02008/02/09 01:45:11

ポイント15pt

Java には細かく分けて三種類あります。一般的に使っているのは J2SE です。

最近は授業でも Eclipse を使ったりすると思いますが、開発環境である Eclipse もまた Java で開発されています (SWT など除き)。

  • 無料で手に入る
  • 標準ライブラリが充実している
  • 豊富な教材資料がある
  • OS に依存しない

のが Java の強みですが、色々できるので「何ができる」か一つに絞るのは難しいです。

  • Swing を使って GUI アプリが「簡単に」作れる
  • ブラウザで実行できる「インストール不要」アプリが作れる (但し Java の install は必要)
  • 携帯で自分の作ったアプリが動かせるかも? (対応機種のみ)
  • OS もほとんど Java だけで作れる!
id:Tomato-360

JAVAにもいろいろ種類があるんですね。

何ができるのかを絞るのが難しいということは、やはりいろいろなことができるということでしょうか。

無料で手に入るというのが結構強いと感じました。

2008/02/11 22:35:40
id:pyridoxin No.8

pyridoxin回答回数3ベストアンサー獲得回数12008/02/11 01:53:53ここでベストアンサー

ポイント25pt

「javaではいったい何ができるのか?」という問いは二つに分けられる。

  1. プログラムは何ができるのか?
  2. Javaだけにできることは何か?

プログラムは何ができるのか?

プログラムというのはコンピュータに命令を与える指示書です。だからコンピュータにできることは基本的になんでもできます。人工知能なんていうのはまだ理論的に確立されていませんがそのうちできるかもしれません。

Javaだけにできることは何か?

人間にとってはJavaとCは違います。では機械(CPU)にとっては両者は違いがあるのでしょうか?

実は最終的に機械語に変更されます。というのもJavaとかCとかいう言語は「人間」にわかりやすく機械語を作るために作られたものです。(詳しく知りたいのであればアセンブラ、コンパイラを調べれば良いでしょう)

だからJavaだけにできることは根源的には存在しません。プログラムができること=Javaができることです。

現実的に何ができ、何が不向きなのか

利点(できること)

OSに依存しない(Cは依存する。)

安全である。(ただしく書けば、「悪いこと」ができない)

みんな使っている(助言やアドバイスが得られやすい。)

欠点(不向き)

単純なことにも大げさになりがち(PerlやRubyのシンプルさには負ける→webアプリケーション開発では致命的)

遅い(最速化されたC++に勝てない(詳しくはガーベージコレクションとJVMを参照))

id:Tomato-360

欠点の単純なことにも大げさになりがちというのは自分で作ってても感じました。

文字を表示するだけでも結構長く書かないとだめですからね。

利点のもみんな使っているというのは学ぶ上で結構有利ですね。

2008/02/11 22:37:41
  • id:DASM
    #8 の欠点ですが、

    - コード量は確かに多くなりがちだが、Eclipse 等でブラウズ感覚でコードを書いたりテンプレートを挿入したり検索したり特定の行に移動したりできる
    - スクリプト言語としての Java なら巻き返しつつあり (Jython, JRuby, Groovy)、Web アプリケーション開発では独自のライブラリ、プラットフォーム (TomCat, Struts など) があるので致命的に不利というわけではない
    - 遅い部分は JNI や別プロセス、スレッドに置き換える事もできる

    ので、一応、対策はあります。だから、「何でも Java でやってしまおう」という企業は多いと思います。
    C, C++ や Perl, Ruby と比較するなら、

    (手軽に実行できる) Perl, Ruby > Java > C, C++
    (速い) C, C++ > Java > Perl, Ruby

    のようにスクリプト言語と C 系の言語の中間的存在になると思います。主観的評価ですが。

    「何でもできる」が、「部分的に見たらもっといい言語があるかも?」というのが Java の感想です。
  • id:pyridoxin
    DASMさんが補足してくれたので大変ありがたいのですが、すこし考えが違うので書かせていただきます。
    -コード量は確かに多くなりがちだが、Eclipse 等でブラウズ感覚でコードを書いたりテンプレートを挿入したり検索したり特定の行に移動したりできる.

    確かにどんな言語もIDEを使えば楽になります。が本質的な問題はIDEを使ったコードサポートとは別に存在します。「軽量化したJavaを書きたいがどのフレームワークを使ったらいいの?」という問題です
    '軽快なJava','JavaからRuby'の著者ブルース・テイト氏の言葉を借りれば
    「Javaのフレームワーク群は種類が多すぎて選択が困難であり、習得コストも高くつく」
    というのがJavaの問題を端的に表しています。その線でいくと
    -Jython, JRuby, Groovy

    というのはJava利用者が「Ruby信者」に反撃す手段に使えます。しかし習得するコストと考えた場合、初心者に「できるから何なの?私がマスターするまでどれくらいかかる? それを選択すれば有利?」と聞かれると「Rubyを選べ」しかいえません。

    - 遅い部分は JNI や別プロセス、スレッドに置き換える事もできる
    できるが
    JNI→「OSに依存しない」という利点を破壊する。
    別プロセス、スレッド→スレッド管理という問題が浮上します。しかしそもそもJavaが遅いのはメモリ管理をC++のように「明示的」に書かないからで、スレッドの話は関係しません。だったら明示的に書けば良いのではと思うでしょう。しかしそれなら「最初からC++を使え」という話になります。

    速さの点ではPerlを遅い遅いと馬鹿にしていたらmod_perlでさほど変わらなくなってしまったぞというオチもあります。今現在Javaは、優れた言語というよりもCと同じようなレガシーな言語になってきています。

    「何でもできる」が、「部分的に見たらもっといい言語があるかも?」私もそう思います。これに付け足すとすれば、
    「いっぱいありすぎるて選択に困る」言語ではないでしょうか?
  • id:YOSIZO
    質問にある「Javaで何が出来るのか?」を考えるのがプログラマと言う仕事です。
    「プログラムを使って問題を解決する事」こそが、プログラミングの本質だと思うです。
    「Javaでコードを書く」事がプログラミングだと思ってませんか?プログラム言語は単なる手段ですよ。

    Javaを覚えたのなら色んな事例を探したり、リファレンスを熟読したり、Java関連のフレームワークを調べるなどして、そこから何が出来るのかを考えましょう。
    探求の取っ掛かりという意味では、ここでの皆さんの回答が大いに参考になると思います。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません