大塚製薬が販売していた JAVA というお茶がありました。
今でも売っているかな?
「まだ甘い飲み物で食事をしているんですか?」
発売が、1983年 今から35年前の話です。
ネットで検索したら「シンビーノジャバティー」となっていました。
今回の「小僧の教えてIT」は、
「Javaが使えればインターネットの王になれるかも プログラム言語夜話 第1話 Java」
と題して
Java言語について できるかぎり、専門用語を使わないで説明いたします。
最後まで読んでいただけて Javaという言語に興味を持っていただかたら幸いです。
注意:このブログは、Javaの解説ではありません。
Javaってこんな言語だよ! というお話です。
スポンサーリンク
目次
最新情報
「Java 23」を提供開始 2024年9月18日(米国時間)
Oracleは2024年9月18日(米国時間)、プログラミング言語「Java」の最新版「Java 23」の一般提供を開始した。
Java 23では、開発者がツールセットを拡張して生産性を向上させ、AI(人工知能)などのテクノロジーを活用したアプリケーションを構築、提供しやすくする機能が強化されているという。
Java 23は、「Java Management Service」(JMS)9.0の最新の一般提供版でサポートされている。JMS 9.0は、「Oracle Cloud Infrastructure(OCI)」のネイティブサービスで、統合コンソールとダッシュボードを提供し、組織がクラウド環境を含む、あらゆるプラットフォーム上のJavaランタイムとアプリケーションを管理できるようにするものだ。
Java 23の機能強化と変更点
Oracleが挙げたJava 23における主要アップデートは下記の通り。
Project Amberの言語機能
JEP 455:プリミティブ型のパターン、instanceof、switch(プレビュー)
言語をより一貫性のある表現力豊かなものにすることで、Javaプログラミングの生産性を向上させる機能。パターンマッチング、instanceof、switchを使用する際に開発者が直面するプリミティブ型に関する制約を緩和する。例えば、プリミティブ型のパターンを全てのパターンコンテキストで許可してパターンマッチングを強化する。また、instanceofとswitchを拡張して全てのプリミティブ型で実行できるようにする。
JEP 476:モジュールインポート宣言(プレビュー)
インポートコードをモジュール自体に配置する必要がなくなり、モジュールがエクスポートした全てのパッケージを迅速かつ簡単にインポートできるようになった。これにより、モジュールライブラリの再利用が簡素化され、パッケージ階層内の位置を学習することなく、サードパーティーライブラリや基本的なJavaクラスをより簡単に使用できるようになる。
JEP 477:暗黙的に宣言されたクラスとインスタンスのメインメソッド(第3プレビュー)
大規模なプログラム向けに設計された言語機能を理解することなく、学習者が最初のプログラムを作成できるようにする。これにより、Javaプログラミングへのスムーズなオンボーディングが可能となり、学習やスキル開発を加速させることができる。
JEP 482:柔軟なコンストラクタ本体(第2プレビュー)
開発者が、「super(..)」や「this(..)」などの明示的なコンストラクタ呼び出しの前に文を表示できるようにすることで、生産性を向上させる。文は構築中のインスタンスを参照できないが、別のコンストラクタを呼び出す前にフィールドを初期化できる。これにより、メソッドがオーバーライドされた場合のクラスの信頼性が向上する。
ライブラリ
JEP 466:Class-File API(第2プレビュー)
Javaクラスファイルの解析、生成、変換のための標準APIを提供する。
JEP 469:Vector API(第8インキュベーター)
ベクトル計算を表現し、実行時にサポートされているCPUアーキテクチャのベクトル命令に確実にコンパイルするためのAPIを導入する。これにより、開発者は同等のスカラー計算よりも優れたパフォーマンスを実現できる。
JEP 473:Stream Gatherers(第2プレビュー)
Stream APIの機能を拡張してカスタムの中間操作に対応する。これにより、ストリームパイプラインは、既存の組み込み中間操作では困難だった方法でデータを変換できるようになる。
JEP 480:構造化された並行性(第3プレビュー)
構造化された並行性のための新しいAPIにより並行プログラミングを簡素化することで、マルチスレッドコードの保守性、信頼性および可視性を向上させる。構造化された並行性は、異なるスレッドで実行されている関連タスクのグループを単一の作業単位に統合することで、スレッドリークや取り消し遅延など、取り消しや停止に起因する一般的なリスクを排除する。
JEP 481:スコープ値(第3プレビュー)
スレッド内およびスレッド間で不変データの共有を可能にすることで、開発者はプロジェクトの使いやすさ、理解しやすさ、パフォーマンス、堅牢(けんろう)性を向上させることができる。
パフォーマンスおよびランタイムに関する更新
JEP 474:ZGC世代別モードのデフォルト化
ZGC(Z Garbage Collector)のデフォルトモードを世代別モードに切り替えることで、2つの異なるモードをサポートするために必要なリソースと保守コストを削減し、開発者の効率を向上させることができる。
ツール
JEP 467:Markdownドキュメントコメント
JavadocドキュメントコメントをHTMLおよびJavadoc @-タグのみでなくMarkdownでも記述できるようにする。開発者は、既存のドキュメントコメントの解釈に悪い影響を与えることなく、ソース形式でAPIドキュメントコメントを簡単に記述したり読み取ったりすることができる。
スチュワードシップ
JEP 471:sun.misc.unsafeのメモリアクセスメソッドを削除を予定した非推奨に設定
将来のリリースで削除が予定されているsun.misc.Unsafeのメモリアクセスメソッドに、アプリケーションが直接または間接的に依存しているかどうかを開発者が理解できるようにするための簡素化されたツールセットを提供する。
なんでもござれのスーパー言語
Javaという言語及び環境は、おそらく「世界で一番使われている」プログラム開発言語と呼んでいいと思います。
2017/05/17 - 米グーグルは17日(現地時間)
Google I/O 2017(Googleの開発者会議)
「Android OSプラットフォームにおける月間アクティブ端末数が、20億台を突破」
このAndroidのアプリ開発の主力言語がJavaだからです。
20億台のAndroid端末が、月間に一度は可動しているというのは、すごいですね。
眠っているのも含めるとどれほど多くの端末があるのか想像もできません。
そして、このJava Androidだけではありません。
あなたが、日常に使っているページもJavaでつくられたシステムが裏で動いているかも知れません。
主なものとして
・携帯機器(携帯電話・PHSやPDA・スマートフォン等)
・企業の情報システムを担う大規模なデータベース
・サーバ
・スーパーコンピュータ
あらゆるネットワークの中でJavaで作成されたものが動いています。
誕生
プログラミング言語JavaおよびJavaプラットフォームは、1990年代前半当時、サン・マイクロシステムズに居たジェームズ・ゴスリン、ビル・ジョイなどの人々によって設計・開発された。
サン・マイクロシステムズ社(Sun Microsystems)、ご存知ですか?
1990年代にUNIXというOS市場で「ひとり勝ち」したワークステーションと呼ばれるコンピュータを販売していました。
Javaは、この企業のジェームズ・ゴスリン、ビル・ジョイなどの人々によって設計・開発されました。
当時UNIXの開発言語は、C(*1),C++(*2)が主流でした。
Cは、誕生したときから万能選手として活躍していましたが、アプリケーションが巨大になると「いろいろと不都合が生じてきました」
そこでCを元にしてC++が作成されたのですが、それでも不十分でした。
そこで、大規模なアプリケーションを効率よく作成できるように
1990年代前半、サン・マイクロシステムズ社のジェームズ・ゴスリン、ビル・ジョイなどの人々によって設計・開発されました。
*1 C(シー、C言語)
*2 C++(シープラプラと呼びます)
特徴
Javaではプラットフォーム非依存
簡単に言えば、いろいろな環境で動作する。
iPhone、Macintosh、Android、Windows、大型汎用機をはじめとするコンピュータデバイスなどが中心ですが、様々な電子機器の中にもJavaで組まれたアプリケーションが動いています。
どうしてこんなことができるかというと、動かす基本部分(プラットフォーム)を動作させたい環境に移植すれば、他で動作しているものが動くという仕組みです。
どんなところでも動作させることができそうだというのが、Javaの特徴です。
オブジェクト指向
「オブジェクト指向」というのが最近のプログラム言語に備わっているものなのですが、これを説明すると
「一冊の本が書けてしまうのではないか?」
というぐらい濃いもので専門用語がバリバリ登場するので止めます。
ここでは、大雑把に説明します。
オブジェクト指向プログラミング(Object Oriented Programming: OOP)
もうちょっと噛み砕いて説明します。
「オブジェクト」とは「データとそれに対する処理をひとまとめにしたモノ」である。
まだ、難しいですよね
例えば テレビの電源をつけるという作業をプログラムでさせます。
テレビ スイッチ オンしなさい とプログラムに命令します。
プログラムではこのような動きをします。
プログラム開始
⇒リモコンON
⇒テレビの型を調べます。
⇒SONYの年々型の何というテレビと判定できました。
⇒SONY用のリモコンを探しなさい。
⇒SONY用のリモコンで電源ON
テレビの電源入りました。
ところが、SONYではなくPanasonicだったら
プログラム開始
⇒リモコンON
⇒テレビの型を調べます。
⇒Panasonic用の年々型の何というテレビと判定できました。
⇒Panasonic用リモコンを探しなさい。
⇒Panasonic用のリモコンで電源ON
テレビの電源入りました。
リモコンを選んでスイッチを押しまで自力でやらなければなりません。
もしテレビが追加したとしたら
新しいテレビメーカーの
「テレビを判定するプログラム」
「リモコンを探すプログラム」
「リモコンの電源を押すプログラム」
を追加しなければなりません。
はっきり言って 死にそうです。
これをオブジェクト的な考えでプログラムを作成しておくと
リモコンON
⇒テレビの電源を入れなさい。
⇒「リモコン箱」に命令
⇒「リモコン箱」が動きました
テレビの電源入りました。
この「リモコン箱」がオブジェクトです。
リモコンの箱に「TV点けて」と命令するだけ、あとは、リモコンがたくさん入っている「箱(もの)」にお任せ
「リモコン箱」の中身は、「データとそれに対する処理をひとまとめにしたモノ」が入っています。
ここでは、世界中のテレビのリモコンが入っていると思ってください。
プログラムは、「リモコン箱」にテレビの電源を入れろと命令するだけで
「リモコン箱」が、対応するリモコンを勝手に選んで電源を入れてくれます。
つまり、新しいテレビが発売されてもプログラムを修正する必要がなく
「リモコン箱」に新しいテレビ用のリモコンを入れておけばよいのです。
こうすれば、テレビが追加される毎にプログラムの修正は必要なくなります。
大雑把に説明するとこんな感じです。
プログラムを小さな部品の様に分けていくプログラムの書き方をします。
つまり例で上げた「リモコン箱」のような「もの」をたくさんつくるのです。
これ以上、詳しく知りたい方は、入門書を呼んでいただければと思います。
普及した理由 5つ
最初に
「無料ですべての環境が揃う」
これが、一番大きな理由です。
次に
「多くの環境で動作すること」
つまり Windowsでしか動作しないとか、Macintoshでしか動作しないということは、ありません。
さらにある環境で作成したプログラムが、他の環境で動作させることができたこと
3つ目に
「Webと相性がよかったこと」
インターネットの普及の影でJavaは大活躍しています。
4つ目
「スピードが速い」
コンパイラ言語なのでインタプリタ型と違いスピードがあります。
最後に
「習得しやすい」
いろいろなところで利用されているので、入門書から専門書まで書籍が多く、ネットで検索しても 多くの情報があります。
わからないところがあってもすぐに調べることができます。
Javaのサンプル
こんな感じで記載されます。
実行すると
Hello World!!
と表示されます。
これからは?
Javaの開発元であるサン・マイクロシステムズは、2010年1月にオラクル社により買収されてしまいました。
以後、オラクル社は、Javaを無償でメンテナンスを行い、普及を促してきました。
しかし
オラクル社は、ここにきて「有料化」へと舵を切りました。
えええ!
普及したらカネとるんかい!
はい、そうです。
詳しくは、こちらのブログでかいてみました。
-
オラクル社がJavaを有料化 それって既定路線? Javaは、使われなくなるのでしょうか?
Javaという言語(環境)を知っていますか? Java このお茶(本当はCoffeeだと言われてますが)と同じ名前がついているコンピュータ言語(環境も含む)は、スマートフォン(主にAndroid)の開 ...
でも、ご安心を「OpenJDK」という無償版も用意されています。
ですから、有料化になっても一安心
※企業で動作しているJavaは、無料版というわけにはいかないのでオラクル社におカネを払うことになるでしょう。
この有料化は、今後、Javaの普及に歯止めがかかると思われます。
無料で使えたというのが大きな利点だったのですが、有料化となると別の環境に移ってゆくことでしょう。
勉強するには
Javaの勉強は、比較的簡単ですが、動作させるまでの環境づくりが、大変かもしれません。
ネットの記事は、間違っていることもあるので注意が必要です。
できれば、入門書を見てください。
[amazonjs asin="4774189936" locale="JP" title="たった1日で基本が身に付く! Java 超入門"]
実際に試したいとなれば、お手持ちのAndroid端末のアプリケーションを書くことも夢ではありません。
仕組みを覚えてしまえば簡単です。
自分でプログラムをしたものが、Android端末で動作するのは、楽しいですよ。
ハードルは、いくつかありますが、チャレンジする楽しみはあります。
iPhoneは、残念ながら、開発の環境がないため試すことができません。
仕事で使う方は、会社の研修か、学校、通信教育で勉強をオススメします。
まとめ
プログラム言語夜話 第1話 いかがでしたか?
Javaを習得してしまえば、大抵の言語を扱うことができるようになりますのでプログラムに興味のある人は、ぜひチェレンジしていただきたいと思っています。
自分でプログラムしたものが、お手持ちのAndroid端末で実際に動作するというのは、楽しいものです。
そして、インターネットの世界でJavaほど使われている言語は他にないでしょう。
そうです、20億台のAndroid端末で動作させることができるアプリケーションをJavaで書くことができるのです。
Java使いになれば「インターネットの王」になれるかも知れません。
プログラム言語は、実際にプログラムを書かないと「絶対」に習得できません。
失敗しながら何度も何度もチャレンジすることで習得できるものです。
そう外国語と同じです。
では、また、次回 お楽しみに・・・
-
プログラム言語 夜話 前夜祭
今週から新しく連載を開始いたします。 そのタイトルは、ズバリ! 「プログラム言語 夜話」 この連載では、星の数ほどあると言われているプログラム言語から、毎週1つをピックアップ プログラムの書き方をレク ...