Javaの基本情報
料金:無料最初からオブジェクト指向を想定して創られたプログラミング言語です。
開発分野 | Webアプリ開発等 |
---|---|
役割 | バックエンド |
平均年収(約) | 505万円 |
開発例 | ほぼ全ての大規模Webサービス |
メリット
- 開発はクラス定義のみ
- メモリ管理が楽である
- すべてのクラスを記述する必要がない
- 本格的なマルチスレッドプログラマを簡単に作成できる
デメリット
- 仕様を理解するまで時間がかかる
- 使いやすいGUIの開発環境がない
- WEBアプリ開発でWebアプリケーションサーバが必要
1件のレビュー
※レビューの初期値はSABICHOU運営が様々な検証を経て設定しております。ユーザーレビューが1件でもあった場合100%ユーザーレビューに依存する形になります。
こちらからJavaの解説記事になります。
Javaとは?
Javaは最初からオブジェクト指向を想定して創られたプログラミング言語です。現在はオラクル社の管理下にありますが、最初はサンマイクロシステムズによって開発され、無料で開発環境(JDK)を入手する事ができました。
当初は画面表示機能が貧弱だったWebブラウザの機能補完のためJava Appletが流行りましたが、flush player等が開発されてAppletが不要となり、サーバーサイドプログラムを中心に、デスクトップアプリや携帯(スマホ)アプリにも利用されるようになりました。
もう少しだけ内部的な事に触れますと、JavaプログラムはOS上で直接動くのではなく「JVM=Java仮想マシン」という実行環境のメモリ内部でインタープリター実行されます(JITコンパイラ等で事前にコンパイルする場合もあり)。これがJavaの特筆すべき事項です。
プログラマはJavaのソースコードをJVM用に書くことになります(本人は意識する必要ありません)。すると様々なコンピュータ、マイコン、携帯(スマホ)用に別々にJVMを用意しておけば、一度作成されたJavaプログラムはどのJVM上でも動くことになります。この特長を「Wright once , run anywhere」と呼びます(残念ながらどうしても機種依存してしまう部分もあるので100パーセントではありませんが)。
Javaを利用するメリット
Javaを利用するメリットは下記の通りです。
- 開発はクラス定義のみ
- メモリ管理が楽である
- すべてのクラスを記述する必要がない
- 本格的なマルチスレッドプログラマを簡単に作成できる
1つずつ見ていきましょう。
メリット①開発はクラス定義のみ
例えばVisualBasicの場合、通常のBASIC同様基本は手続き型言語ですが特別な操作(例えばデスクトップにフォームを表示する等)の場合だけ事前に用意されたオブジェクト(クラスから作成されたモノ、と思ってください)を利用するだけなので、オブジェクト指向言語と呼ぶことはできません。
しかしJavaの場合クラス(オブジェクトの設計図だと思ってください)のみをソースコードに記述します。このクラス1つ1つの中に「変数と実行コード」がセットで定義されていて、JVMが管理するメモリ空間内にクラスを使ってオブジェクトを生成します(用語の話になりますが、このメモリ上に生成されたメモリイメージそのものをインスタンスと呼びます)。
結果、オブジェクトの中に変数と、その変数を操作する実行コード(メソッドと呼びます)が含まれているので”オブジェクトを作成して別のオブジェクト内のメソッドから該当オブジェクトのメソッドを呼びだす”の連続のような形で、完全なオブジェクト指向の言語となるわけです。
VisualBasicのような「中途半端な言語だ」というイメージを持つことはまずないでしょう。
メリット②メモリ管理が楽である
プログラマにとってメモリ管理は頭痛の種です。
例えばC言語では変数は実行プログラムが勝手にスタック領域などに確保してくれるので問題ないのですが、大量なデータや複雑な構成のデータを扱う場合は所謂ヒープ領域にプログラマ自身が確保します。そのデータが不要になったタイミングで使われていたメモリ空間を解放する必要があるのですが、これを忘れてしまうとどんどん使用メモリが蓄積してメモリ不足エラーで終了してしまいます。
Javaではプログラマが明示的にメモリ解放のコードを書かなくても「このメモリは実行中のどのメソッドからも利用されていない」とJVMが判断した場合、JVMのガベージコレクションという機能が勝手に不要メモリを解放してくれます。
また、ガベージコレクションは明示的に実行させる事も可能です。
メリット③すべてのクラスを記述する必要がない
「1つ目のメリット」でJavaプログラミングはクラス定義をすることにつきるとご説明しましたが。では望んでいるプログラム(アプリケーション)を開発するには必要そうなクラスをすべて定義しなければいけないのでしょうか?そんな事はありません。
他のプログラミング言語でも少なからず「ライブラリ」という短い実行コードの集合体が用意されていますがJavaも例外ではなく「Java API」或いは「Java クラスライブラリ」又は縮めて「クラスライブラリ」が豊富に用意されています。
Javaではすべてがクラスなので、ライブラリも実行コードではなくクラスの集合体となっているわけです。デスクトップ上のJavaプログラムを開発する場合は「標準クラスライブラリ」を知っていればほとんど開発可能ですが「Webアプリケーションサーバ用のプログラム(Servlet等々)を作りたい」という場合は、そのサーバが提供しているクラスライブラリを併せて使用することになります。
メリット④本格的なマルチスレッドプログラマを簡単に作成できる
本格的なマルチスレッド(同時に複数のコードが実行されているように見える)アプリケーションを開発するのは、プログラマ自身が「タイマー制御するコード」を記述する必要があり、とても困難でした。
マルチスレッドの例としてはサーバプログラム(Webサーバ等々、複数のアクセスが集中するモノ)が想像しやすいでしょう。しかしJavaにはマルチスレッドプログラミングのためのクラスライブラリが標準で用意されています。
また、「Tomcat」や「IBM WebSphere」のようなWebアプリケーションサーバを導入すると、Webブラウザからの複数のリクエストのマルチスレッド処理はサーバ自身が行ってくれるため、プログラマはマルチスレッド用のクラスライブラリを使う必要すらありません。
最後に注意ですが、自分でマルチスレッド用のクラスライブラリを使用する際は必要に応じて「排他制御」を行ってください。複数のメソッドが(見かけ上)同時に同じデータにアクセスするケースでは「排他制御」が不可欠です。その際は「デッドロック」が発生しないような注意も併せて必要です。
Javaを利用するデメリット
Javaを利用するデメリットは下記の通りです。
- 仕様を理解するまで時間がかかる
- 使いやすいGUIの開発環境がない
- WEBアプリ開発でWebアプリケーションサーバが必要
1つずつ見ていきましょう。
デメリット①仕様を理解するまで時間がかかる
メリットを4つ挙げさせていただきましたが、Javaを知らない方のどのくらいの方々が、クラスだのインスタンスだのオブジェクトだの、その名称と併せて100パーセントご理解いただけたでしょうか?
しかもJava独特の仕様はそれら以外にも憶えなくてはならない事項がたくさんあります。焦らず急がず、参考書やWebの解説ブログでもなんでも良いので、じっくり腰を据えて学習していただきたい言語です。
その代わり仕様さえ理解してしまえば、色々なプログラムを作成したくてうずうずしてくることでしょう。
デメリット②使いやすいGUIの開発環境がない
これは私的意見が入ってしまうのですが、Javaで提供されている基本の開発環境はJDKです。Windows上の開発の場合ですと、テキストエディタ(メモ帳)で「~.java」というソースコードを記述し、「javac.exe」でJVMがインタープリター実行できる「~.class」というバイナリファイルを作り、このclassファイルの数が多い場合は「jar.exe」で「~.jar」というアーカイブファイルを作り、「java.exe」で「~.class」又は「~.jar」を実行します。
簡単なデスクトップツールならこれで構いませんが、通常は「ソースコード作成→コンパイル→テスト実行&デバッガ→ソースコードを修正→……」というサイクルになりますから、GUIの使いやすいツールがないと厳しいです。
商品名を上げることは避けますが、オープンソースの使いやすいGUIツールの登場を待ちたいです。(「eclipse」というGUI開発ツールもあるのですが、昔に比べてごちゃごちゃしていて使いにくくなったという印象です。)
デメリット③WEBアプリ開発でWebアプリケーションサーバが必要
WebアプリケーションをJavaで実現する場合、PHPの様にapacheと連携させるには自分でWebアプリケーションサーバを開発し、届いたリクエストを何とかして自分に投げてもらえる仕組み(apache用プラグイン)が必要になります。
しかし異なるWebアプリケーションを開発するたびにWebアプリケーションサーバから自作していたのでは工数がかかるばかりで何も良いことがありません。そこでWebアプリケーションの開発にはWebアプリケーションサーバという「土台」を用意するのが効率的です。
お金はかかってしまいますが…。どうしても無料が良いなら「Apache Tomcat」を使うという手もありますが、スケーラビリティ(大規模構成)に難がありますし、セキュリティや機能面を見てもおすすめはできかねます。例えば”お金が発生しない、顧客への情報やサービス提供”のアプリケーションならば、暗号通信も不要でTomcatでも何とかなるかもしれません。
Webアプリケーションは通常データベースへの読み書きも発生しますのでOracleやIBMが提供する製品の導入も選択肢として憶えておいてください。
Javaの利用をオススメしたい人
Javaの利用をオススメしたい人は下記のような人々です。
おすすめ
オブジェクト指向プログラミング言語に触れてみたい方:
大学では実行速度が速いFortranやCを学んだがどちらも昔からある手続き型言語。かと言ってC++は複雑そうなのでJavaでオブジェクト指向を知りたい場合
Webシステムの開発をしている企業への就職を目指す方:
現在でもJavaによるWebアプリケーションの開発は需要がある
レンタルサーバ上でネット販売サイトを構築したい方:
セキュリティ面ではRubyかJavaのほぼ2択になる。仮にネット販売サイトの構築を外注したとしても、簡単な画面の変更・修正くらいは自分でできた方が運用費用が浮く
Javaの利用をオススメできない人
Javaの利用をオススメできない人は下記のような人々です。
おすすめできない
プログラミング言語に触れるのがまったく初めての方:
Javaの実行コード(メソッド)部分は、普通の構造化プログラミングの手法で記述します。BASICやCで構造化プログラミングを学んでおく必要がある
大学等で実行速度が高速な言語が必要な方:
実行速度に関してはFortranやCには劣る
WindowsデスクトップでMS-Office(Excel)と連携するプログラムを作成したい方:
JavaでOfficeと連携するには「ODBC-JDBCドライバ」を使用するが、使い勝手が良いとは言えないし「ODBC」と「JDBC」という2つのインターフェースを挟むため実行速度的にも高速化は困難。VisualBasicやPythonをおすすめ
Javaの効率的な学習方法
既にFortranやC言語等の経験があること前提です。
※スクロールしてご覧ください
Javaの学習ルート
- 入門書の購入やWeb上の入門サイトを利用:
まずはJavaの基本仕様の理解が不可欠 - Oracleが販売している参考書購入やWeb上のJava活用サイトの利用:
基本仕様はあくまで基本仕様でしかないので、さらに掘り下げてかつサンプルプログラムの作成や改造などで理解を深める - OracleのJava言語仕様のサイトで提供されているドキュメント読破:
翻訳されず英語のままの文書も多いかもしれないが、とにかくそれこそがJavaのすべてなので、目を通して損をする事はない - 資格試験対策本を購入する:
資格を取るつもりがなくてもテスト問題に挑戦することで見落としていた内容等々を発見することができる
Javaまとめ
Java言語は「オブジェクト指向」を体現するため設計された稀な言語です。また、仕様を正しく理解していれば誰でも扱うことができるようになります(C++ほど敷居が高くありません)。
携帯(スマホ)アプリ、Applet、デスクトップアプリ、Webアプリケーションと活躍の場も広いです。
JDBCというインターフェースが標準で用意されているので、データベースメーカーがJDBC用のドライバを用意してくれていれば、データベースにアクセスする(SQL分を実行する)デスクトップアプリケーションの作成も可能です。
今後、Rubyのような新しいプログラミング言語はたくさん開発されるでしょうが、こと「オブジェクト指向」にフォーカスするならば、Javaの活躍の場が消える心配は杞憂と言えるでしょう。
- URL
- DETAIL LINK
- 仕事サービス
- プログラミング言語
- 場所
- オンライン
- ハッシュタグ
- 無料で利用できる 全国で利用できる
※当ページの情報は記載当時の情報であり、現在の内容と異なる場合があります。詳細はこちらをご覧ください。
※解説記事部分の情報は実際にJavaを実際に利用されたユーザー・またはJavaを調査したものを記事にしております。一部、解説者の私情や考えを反映しているものがございますのでご了承ください。
Javaの評判・口コミまとめ(全1件)
レビューを絞り込む
細かいプログラミングまで出来る
学習コスト
7
実行速度
9
書きやすさ
6
知名度
10
将来性
5
自分は、専門学校でその言語を意使用したのですが、どの言語もそうですが、覚える知識や、単語?なども多く、構成などを考えるのも非常に大変であると感じたと同時に、すごく細かいプログラミングまで出来るなと感じました。
ミスがある場合にはこの行が間違っているなど、具体的に示してくれるし、何より自分の思ったプログラムが動くのがとても達成感のあるものだなと感じました。
※当メディアの口コミを引用する際は必ず記事URLのリンクを貼り付けてください。
※メールアドレスは必須ではありません。
※口コミに関するルールは口コミガイドラインをお読みください