プログラミング言語java...
TRANSCRIPT
目次
•はじめに • Javaって今どうなの?
•プログラミング言語Java
•開発とJava
• Javaと学習 • どこから始める
2018/11/21 プロトタイプ(案) 2
はじめに
• Javaって今どうなの?
•注目度・安定感は?? • 情報処理技術者試験(IPA)
• 平成30年度秋期 基本情報技術者試験 • 午前問題 問8 必須問題
• 午後問題: 問11 ソフトウェア開発(Java)<選択必須問題>
2018/11/21 プロトタイプ(案) 3
プログラミング言語Java
•プログラミング言語としての特徴 • オブジェクト指向
• ガーベジコレクション(メモリ管理)
• 豊富なライブラリ
2018/11/21 プロトタイプ(案) 4
Javaとオブジェクト指向
•オブジェクト指向 • カプセル化
• 情報隠蔽、情報の独立化
• 部品化、モジュール化 => 並行作業、作業分担の促進
• インターフェイスと実装との分離
• 継承 • インターフェイスの相続
• コード記述量の削減、誤りの削減
• ポリモーフィズム(多相性) • 同じ処理には同じ名前
• 違うデータ型でも同様の処理なら同じ名前
• 統一性、抽象化
2018/11/21 プロトタイプ(案) 5
Javaとガーベジコレクション
•ガーベジコレクション(メモリ管理) • 断片化したメモリ空間を再配置で使いやすく
• 言語機能として支援 • 独自ルーチン(部品)を記述しなくてよい
2018/11/21 プロトタイプ(案) 6
Javaと豊富なライブラリ
•豊富なライブラリ(有償ライブラリもあります) • 計算
• 数学・統計、物理、経営科学、財務など
• 株価/FXなどの予測
• 入出力・変換・解析 • 帳票出力、ファイル変換(CSV, XMLなど)
• オブジェクト・ファイル変換
• ファイル出力(PDF/HTML/Excel/CSV/XML/プリンタダイレクトなど)
• ログ出力
• XML/HTML解析
• サービス関係(twitter, Web, RSS, SSHなど)
• データベース接続
2018/11/21 プロトタイプ(案) 7
開発とJava
• 開発 • 実行可能な成果物を制作
• 可搬性(Portability)、様々なプラットフォームで実行可能 • 「Write Once, Run Anywhere!」 • 具体例: MS-Windows, Linux, Mac OS, Solarisなど
• 実行速度 • JVM上での実行もそれほど遅くはない • JIT(Just-In-Time)コンパイラ [C1, C2, Graalなど]で、さらに高速化
• Classファイルをネイティブコードに変換
• 大規模開発 • 事例: 東京ガス、IPA, Oracleなど • 金融取引: 株式・証券・ファンド・FXなど
• リアルタイム情報提供、分析、レコメンデーション、自動取引など • その他
• ECサイト構築の求人では、Javaプログラミング経験者募集が多い
2018/11/21 プロトタイプ(案) 8
開発とJava(2)
•統合開発環境 IDE (Integrated Development Environment) • Eclipse
• JBuilder
• NetBeans
• IntelliJ IDEA
• X code
• Visual Studio Code
2018/11/21 プロトタイプ(案) 9
開発とJava(3)
•開発フレームワーク • 1) Spring Framework
• 2) Play Framework
• 3) JSF (Java Server Faces)
2018/11/21 プロトタイプ(案) 10
開発とJava(4)
•ビルドツール • ツールへの道
• 人力、スクリプト、ビルド-ツール
• 用語 • インテグレーション(統合)、デリバリー(納品)
• デプロイメント(配置、展開、使用可能化、設置、反映、導入)
• 伝統的、比較的古いツール • GNU make, nmake, gmakeなど
• Ant
• 最近のツール • Maven, Gradle, Bazel, SBT
• Grunt, Gulp,
2018/11/21 プロトタイプ(案) 11
Javaと学習
•どこから始める • 開発環境
• OS: Windows10
• IDE: Eclipse
• その他: FWなし、システムLIBのみ • CUI、Console、DBなし、NWなし
• 基本的文法、基本的制御、基本的データ型
• クラス、インスタンス、インターフェイス、抽象
• 統合環境 Eclipse • 基本的タイピング、補完機能、色分け、字下げ
• コーディング規約、Housing Rules
2018/11/21 プロトタイプ(案) 12
平成30年度秋期 基本情報技術者試験 午前問題 問7
Javaと学習(2)
•どこを目指す,何を達成(通過)する? • とりあえず
• システムライブラリ、各種数値計算、各種グラフ出力
• 基本的アルゴリズム(探索、整列など)
• 抽象データ型(スタック、キュー、リスト、木など)
• 各種ファイル出力
• ホップ、ステップ • GUI, Web
• データベース、ネットワーク
• ジャンプ • 他のプログラムとの連携(ファイル経由、NW経由など)
• 大規模開発に向けて
2018/11/21 プロトタイプ(案) 13
Javaと学習(3)
•これまでのJava • Java6以前:
• 1990年代にSunMicroSystems社で開発、2010年Oracle買収
• C言語、C++言語を意識
• 組込み(家電、モバイルなど)向け、安全を重視 • 近年では、IoTも?
• 3つのエディション: ME/SE/EE
• 4つの形態: • Console Application / Applet / Servlet /JSP(Java Srver Pages)
• Appletは実行が遅い、重い、とかなり言われた!
• => Flash, SilverLight, HTML5などへ
• JSPの需要は安定的にあり、重要!
2018/11/21 プロトタイプ(案) 14
Javaと学習(4)
•最近のJava • Java7
• 1)数値リテラル中に「 _ 」 2)バイナリリテラル
• 3)switch文を文字列で評価 4)ダイヤモンド演算子で型指定の省略
• 5)try-with-resource文 6)1つのcatch文で複数の例外を補足
• 7)レフレクションの例外クラス 8)ThreadLocalRandom
• Java8 • 1)ラムダ式 2)Stream API 3)Optional
• 4)日付時刻API 5)interface 6)アノテーション
2018/11/21 プロトタイプ(案) 15
ラムダ式
•ラムダ式 • 関数インターフェイスの導入
• 「メソッド定義を式として扱える機能」
• 出典: https://www.sejuku.net/blog/12614
• コード記述量の削減
• 遅延評価(Lazy Evaluation)の恩恵
2018/11/21 プロトタイプ(案) 16
Stream API
• Stream API • メソッド・チェーン(Method Chain)
• メソッドを数珠繋ぎに配置可能
2018/11/21 プロトタイプ(案) 17
long count = list.stream() .filter(s -> s.startsWith("C")) .mapToInt(s -> s.length()) .sum(); //出典: https://qiita.com/oohira/items/9c13f92815266cc5112c
Optional
• Optional • 値がないかもしれない、という状態を表現
2018/11/21 プロトタイプ(案) 18
//Java7 String lang = getConfigValue("lang"); if (lang == null) { lang = "en" } //Java8 Optional<String> value = getConfigValue("lang"); String lang = value.orElse("en"); //出典: https://qiita.com/oohira/items/9c13f92815266cc5112c
以下略
2018/11/21 プロトタイプ(案) 19