プログラミング言語java...

19
プログラミング言語Java ~~その特徴~~ 九州情報大学経営情報学部 合田和正 <[email protected]>

Upload: others

Post on 17-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

プログラミング言語Java ~~その特徴~~

九州情報大学経営情報学部

合田和正

<[email protected]>

Page 2: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

目次

•はじめに • Javaって今どうなの?

•プログラミング言語Java

•開発とJava

• Javaと学習 • どこから始める

2018/11/21 プロトタイプ(案) 2

Page 3: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

はじめに

• Javaって今どうなの?

•注目度・安定感は?? • 情報処理技術者試験(IPA)

• 平成30年度秋期 基本情報技術者試験 • 午前問題 問8 必須問題

• 午後問題: 問11 ソフトウェア開発(Java)<選択必須問題>

2018/11/21 プロトタイプ(案) 3

Page 4: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

プログラミング言語Java

•プログラミング言語としての特徴 • オブジェクト指向

• ガーベジコレクション(メモリ管理)

• 豊富なライブラリ

2018/11/21 プロトタイプ(案) 4

Page 5: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

Javaとオブジェクト指向

•オブジェクト指向 • カプセル化

• 情報隠蔽、情報の独立化

• 部品化、モジュール化 => 並行作業、作業分担の促進

• インターフェイスと実装との分離

• 継承 • インターフェイスの相続

• コード記述量の削減、誤りの削減

• ポリモーフィズム(多相性) • 同じ処理には同じ名前

• 違うデータ型でも同様の処理なら同じ名前

• 統一性、抽象化

2018/11/21 プロトタイプ(案) 5

Page 6: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

Javaとガーベジコレクション

•ガーベジコレクション(メモリ管理) • 断片化したメモリ空間を再配置で使いやすく

• 言語機能として支援 • 独自ルーチン(部品)を記述しなくてよい

2018/11/21 プロトタイプ(案) 6

Page 7: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

Javaと豊富なライブラリ

•豊富なライブラリ(有償ライブラリもあります) • 計算

• 数学・統計、物理、経営科学、財務など

• 株価/FXなどの予測

• 入出力・変換・解析 • 帳票出力、ファイル変換(CSV, XMLなど)

• オブジェクト・ファイル変換

• ファイル出力(PDF/HTML/Excel/CSV/XML/プリンタダイレクトなど)

• ログ出力

• XML/HTML解析

• サービス関係(twitter, Web, RSS, SSHなど)

• データベース接続

2018/11/21 プロトタイプ(案) 7

Page 8: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

開発と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

Page 9: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

開発とJava(2)

•統合開発環境 IDE (Integrated Development Environment) • Eclipse

• JBuilder

• NetBeans

• IntelliJ IDEA

• X code

• Visual Studio Code

2018/11/21 プロトタイプ(案) 9

Page 10: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

開発とJava(3)

•開発フレームワーク • 1) Spring Framework

• 2) Play Framework

• 3) JSF (Java Server Faces)

2018/11/21 プロトタイプ(案) 10

Page 11: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

開発とJava(4)

•ビルドツール • ツールへの道

• 人力、スクリプト、ビルド-ツール

• 用語 • インテグレーション(統合)、デリバリー(納品)

• デプロイメント(配置、展開、使用可能化、設置、反映、導入)

• 伝統的、比較的古いツール • GNU make, nmake, gmakeなど

• Ant

• 最近のツール • Maven, Gradle, Bazel, SBT

• Grunt, Gulp,

2018/11/21 プロトタイプ(案) 11

Page 12: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

Javaと学習

•どこから始める • 開発環境

• OS: Windows10

• IDE: Eclipse

• その他: FWなし、システムLIBのみ • CUI、Console、DBなし、NWなし

• 基本的文法、基本的制御、基本的データ型

• クラス、インスタンス、インターフェイス、抽象

• 統合環境 Eclipse • 基本的タイピング、補完機能、色分け、字下げ

• コーディング規約、Housing Rules

2018/11/21 プロトタイプ(案) 12

平成30年度秋期 基本情報技術者試験 午前問題 問7

Page 13: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

Javaと学習(2)

•どこを目指す,何を達成(通過)する? • とりあえず

• システムライブラリ、各種数値計算、各種グラフ出力

• 基本的アルゴリズム(探索、整列など)

• 抽象データ型(スタック、キュー、リスト、木など)

• 各種ファイル出力

• ホップ、ステップ • GUI, Web

• データベース、ネットワーク

• ジャンプ • 他のプログラムとの連携(ファイル経由、NW経由など)

• 大規模開発に向けて

2018/11/21 プロトタイプ(案) 13

Page 14: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

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

Page 15: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

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

Page 16: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

ラムダ式

•ラムダ式 • 関数インターフェイスの導入

• 「メソッド定義を式として扱える機能」

• 出典: https://www.sejuku.net/blog/12614

• コード記述量の削減

• 遅延評価(Lazy Evaluation)の恩恵

2018/11/21 プロトタイプ(案) 16

Page 17: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

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

Page 18: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

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

Page 19: プログラミング言語Java ~~その特徴~~fjoho.sakura.ne.jp/download/Java-05.pdf目次 •はじめに •Javaって今どうなの? •プログラミング言語Java

以下略

2018/11/21 プロトタイプ(案) 19