【ニーズ】
・2001年のリリース以降、プログラミングランキングで常に上位 。
・ Javaのニーズは安定して高い 。
・ サーバー内で動くプログラミング言語。
・ サーバー構築を行うプログラマーにJavaのスキルが求められることが多い 。
・ サーバーやシステムの運用のために、今後もJavaのスキルは安定して求められる 。
【メリット】
・ ライブラリやAPIが充実している 。
画像処理 → OpenCV
グラフィック → JavaFX
構文解析 → JavaParser
・ 自由度の高い実行環境
JVM(Java Virtual Machine:Java仮想マシン)というプログラム上で動作しており、 MacでもWindowsでも、JVMさえ使えればどんな環境でもJavaを動作させることができる。
・ 処理速度が速い
Javaがコンパイラ型言語であるため、動作が速い 。
コンパイラ型言語は事前に機械用のソースへコンパイルするため、インタプリタ型言語に比べて、実行速度が速くデータ処理に優れてる。
・ セキュリティ面が優れている 。
【デメリット】
・ オブジェクト指向に対する理解が必要 。
・ 小規模システム開発に適していない 。
Javaの強みである拡張性と再利用性が小規模なシステムでは活かされないうえに、無理にJavaを用いることでソースが長くなってしまったり、挙動がおかしくなってしまうことも考えられる。
個人で案件獲得を目指すのであれば、RubyやPHPといったプログラミング言語がおすすめ。
【 フレームワーク 】
フレームワークのメリットは、
- 開発期間を短くできる 。
- 多人数開発時にソースの記述方法が統一されやすい。
- フリーランスとしても仕事が取れる 。
デメリットは、
- パターン化されているため、その脆弱性が見つかり易く、そこを攻撃されることがある
( プログラミング言語:フレームワーク = 2:8」くらいの力配分で学習を進めるという認識でいると効率的に学習を進めていくことができる )
Rubyなら「Ruby on Rails」 PHPなら「CakePHP」 Javascriptなら「AngularJS」
Javaの代表的なフレームワーク
1位 Spring Framework
特徴
- カバーしている範囲がとても広い万能型フレームワーク 。
- 拡張性が高い 。
- 保守性が高い 。
- 再利用性が高い 。
- 万能なフレームワークなので様々なシステム構築に対応可能
2位 Play Framework
特徴
- 動作が速い
- 堅牢性がある
- 高速に開発ができる
- 少ないリソースでアプリを動作させることができる
3位 JSF
特徴
- 開発チームとデザインチームで分業できる
- ユーザーインターフェイス(ユーザーが操作する見た目の部分)を簡単に作ることができる
- 綺麗なかっこいい画面を作る!ということはあまり得意ではない
- システム全体のうち見た目に関する部分を提供してくれる
【 オブジェクト指向】
開発におけるポイントを実現したもの 。
- プログラムの独立性 → カプセル化
- プログラムの再利用性 → 継承
- プログラムの拡張性 → ポリモーフィズム
プログラムの種類
- オブジェクト指向型
- 手続き型
- 関数型