stanford-oval/wikipedia huggingface dataset:
ラスカル
外部サイト

あらいぐまラスカル - テレビアニメ公式サイト
ラスカル（公式）（@Rascal_tweet） - X公式アカウント
木村正太

| --- | --- |
: 「木村勝太」あるいは「木邨将太」とは別人です。
| 基本情報 |
| --- | --- |
国籍:   日本
出身地:  岩手県一関市
生年月日:   (1986-05-24) 1986年5月24日（38歳）
身長 体重:  178 cm 81 kg
選手情報
投球・打席:  右投右打
ポジション:  投手
プロ入り:  2004年 ドラフト5巡目
初出場:  2009年5月24日
最終出場:  2009年11月4日
経歴（括弧内はプロチーム在籍年度）
  岩手県立一関第一高等学校  読売ジャイアンツ (2005 - 2011)
 この表について  この表はテンプレートを用いて表示しています。編集方法はTemplate:Infobox baseball playerを参照してください。 ■プロジェクト:野球選手  ■テンプレート  
木村 正太（きむら しょうた、1986年5月24日 - ）は、岩手県一関市出身の元プロ野球選手（投手）。現在は読売ジャイアンツの球団職員。
経歴 > プロ入り前

一関市立山目中学校（現：一関市立磐井中学校）時代から、その快速球には目を瞠るものがあったが、制球には難があった。
地元の進学校である一関一高に進学。公式戦でノーヒットノーランを2度達成。東北地方では「鉄腕機関車」と呼ばれ注目される投手へと成長した。また、3年次には21世紀枠で49年ぶり第76回選抜高等学校野球大会に出場。ダルビッシュ有、佐藤剛士とともに「東北ビッグ3」とも呼ばれた。
2004年のプロ野球ドラフト会議で、読売ジャイアンツから5巡目指名を受け入団。
経歴 > プロ入り後

2006年オフには、辻内崇伸、加登脇卓真、東野峻、加藤健、亀井義行の5選手とともにハワイ・ウィンターリーグに派遣された。
2009年は開幕こそ2軍スタートとなったが、ファームで防御率1.80という好成績を残し、5月に1軍に昇格。自身の誕生日である5月24日には、オリックス戦にプロ初登板し、1回を投げて1失点で終えた。その後は中継ぎの1人としてシーズンを通し1軍に定着した。8月23日のヤクルト戦では3回無失点と好投し、初のヒーローインタビューを経験。北海道日本ハムファイターズとの日本シリーズにも2回戦・4回戦で登板を果たした。
2010年は背番号が92から15へ変更された。同姓の木村拓也（元内野守備走塁コーチ）が2009年に引退したことで木村姓の選手は1人になったが、引き続きスコアボードの表記名は「木村正」のままで通すこととなった。先発枠に挑戦するとみられていたが、キャンプ中盤で右肘の故障を発症し離脱。5月27日のシリウス戦に復帰登板したものの、再度怪我を発症。結局この年は1軍登板が無いまま終了した。11月4日には自由契約となると同時に、育成選手契約となる。背番号は011となる。なお、15番は同年のドラフトで1位指名された澤村拓一が付けることとなった。
2011年3月1日には、この年に施行されたプロアマ試合の解禁に伴って行われた、宮崎県総合運動公園第二硬式野球場での巨人対中央大戦に登板。同年シーズンはイースタン・リーグでも登板は無く、10月22日には球団から戦力外通告を受けた。
2012年から、巨人が主催する少年野球スクール「ジャイアンツアカデミー」にコーチとして就任。
2013年1月に、巨人の打撃投手になることが発表された。
2018年1月1日付けでデータ分析室への異動が発表された。
2024年は育成強化本部DAチーム。
詳細情報 > 年度別投手成績

| 年  度 | 球団 | 登板 | 先発 | 完投 | 完封 | 無四球 | 勝利 | 敗戦 | セ丨ブ | ホ丨ルド | 勝率 | 打者 | 投球回 | 被安打 | 被本塁打 | 与四球 | 敬遠 | 与死球 | 奪三振 | 暴投 | ボ丨ク | 失点 | 自責点 | 防御率 | WHIP |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 2009 | 巨人 | 25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | ---- | 118 | 29.1 | 23 | 2 | 12 | 1 | 0 | 23 | 1 | 0 | 13 | 11 | 3.38 | 1.19 |
| 通算：1年 | 通算：1年 | 25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | ---- | 118 | 29.1 | 23 | 2 | 12 | 1 | 0 | 23 | 1 | 0 | 13 | 11 | 3.38 | 1.19 |
詳細情報 > 記録

初登板：2009年5月24日、対オリックス・バファローズ1回戦（東京ドーム）、9回表に4番手で救援登板・完了、1回1失点
初奪三振：同上、9回表に鈴木郁洋から空振り三振
初ホールド：2009年9月19日、対東京ヤクルトスワローズ21回戦（明治神宮野球場）、5回裏2死に3番手で救援登板、1/3回無失点
初安打：2009年8月23日、対東京ヤクルトスワローズ16回戦（明治神宮野球場）、6回表に石川雅規から右前安打
詳細情報 > 背番号

92 （2005年 - 2009年）
15 （2010年）
011 （2011年）
201 （2013年 - 2017年）
防災まちづくり

防災まちづくり（ぼうさいまちづくり）とは、まちづくりのひとつであり、災害に強い地域社会の形成に向けた取り組みのことを指す。定義及びその内容については以下に詳述する。
防災まちづくりとは

防災まちづくりとは、明確に確立された定義はないが、広義には「地震・火災発生・豪雨・豪雪などの自然現象を誘因として発生する被害を、できるだけ小さくするように災害に強いまちをつくってゆく行政と市民の共同努力」と定義される。また、狭義には「昭和40年代の反公害運動を経て、昭和50年代初頭より都市計画における地区環境整備手法として定着してきた住民主体のまちづくり運動の、防災を目的とした近年のコミュニティ活動」のことを指す。
ちなみに、防災まちづくりを推進している広島市では、「地域社会で住民が主体となって取り組む、防災を主体としたまちづくり活動」と定義している。「防犯まちづくり」と合わせて、「安全・安心まちづくり」といわれることもある。
近年では、神戸市などを中心として事故やテロなどの人為災害も大規模災害として注意を要する課題となっており、防災まちづくりの対象分野は広がりつつある。
防災まちづくりとは > 防災まちづくり要旨

多くの市町村が取り組む防災まちづくりには、いくつかの特徴がある。
第一に、想定される河川氾濫・津波など災害への物理的な防災策を講じるための都市計画であり具体的にはダムや堤防、防潮堤などの防災施設の建造である。岩手県普代村や洋野町では、M9.0という東北地方太平洋沖地震においても高さ15.5mの普代水門(1984年完成)や太田名部防潮堤（普代村）や高さ12mの防潮堤（洋野町）が破壊されずに津波を大幅に減衰させ、実質的に津波をはね返したため、それらの地域の貴重な人命と財産を守った。普代村では2011年の東北地方太平洋沖地震において被災した民家は無く、死者はゼロである。普代水門自体は、事業計画時に15.5メートルは高すぎるとして非難を浴びたが、当時の村長である和村幸得が「15メートル以上」と譲らず、防災のための財政支出を惜しまなかった。その村長の決断が村を救い、そしてこの事例により、地震や津波などの防災のための公共事業の重要性が再確認された。
さらには、減災である。防災施設の建造だけでは不十分であり、既存の防災事業のような、災害の被害を0にすることを前提として万遍なく防災対策を施すのみでは、阪神淡路大震災や東北地方太平洋沖地震のようないざ行政の想定をはるかに超える災害に見舞われた際に対応ができない。ゆえに被害を0にするよりも、被害が出ることを想定、被災を覚悟した上で、最も被害が想定される部分に対して集中的に対策をとることにより、結果として災害の被害を最小化しようという取り組みである。その具体的な取り組みが事前復興であり、災害が発生した時のことを考えて、震災時の出火による延焼を防ぐ耐火性の強化や倒壊による圧死、生き埋め（阪神大震災の死者の8割は圧死による即死だった）の可能性を減らすため、建造物の耐震性強化への取り組みの他、倒壊や出火、混雑により避難路が封鎖されるなどの事態を避けるため、道路の幅を拡大するなどの施策が推進されている。
また、協働も重要な防災策である。災害の被害を最小化させる上で、行政単独による取り組みでは不十分であり、市民や企業をはじめとした地域構成員全体の連携協力をしていこうというものである。
また、その地域構成員全体が協働して防災まちづくりを推進する上で、特に不可欠とされているものとして、地域力の醸成がある。これは、市民をはじめとした地域構成員に対して地域に対する関心を深めてもらい、その上で地域構成員間での交流を深めておくことで、いざ災害が発生した際にお互いに助け合う関係を形成しておくことが期待される。その意味で、今日では、地域力醸成もまた、防災まちづくりにおける取り組みとして認識されつつある。
防災まちづくりとは > 防災ひとづくり

防災ひとづくりで、最も重要なのは災害の危険を時下に蒙る市民自身が防災意識を有し、自らや近隣住民との助け合いにより、避難救助活動及び消火活動、小病人や弱者の手助けを展開することである。そのためには、市民が災害の恐ろしさや地域の一員としての自覚し、主体的に地域の安全を担うだけの力を養っていく、即ちエンパワーメントを図ることが必要になってくる。個々人の自覚が、地域全体に自律と連帯を育み、地域における協働の防災まちづくりへとつながっていくものである。
そのためにも、市民同士や市民や行政、専門家などの間にあるリスク意識の乖離を埋めるリスクコミュニケーションを展開し、地域のあらゆる主体の防災意識の共有化を図り、災害図上訓練(DIG)、まち歩きなど様々な学習の機会をとらえながら、防災意識の醸成を図ることが期待される。
防災まちづくりとは > 防災まちづくりの具体的な取り組み

防災まちづくりの具体的な取り組みとはどのようなのものか。その事例のひとつが、防災まちづくりにおけるワークショップを用いた行政、企業、市民の合意形成の取り組みである。これは、地域の防災力を向上させる上で、平時から行政と市民、企業が地域の防災に関する情報や認識を共有し、事前に協力関係づくりや対策を進めることで、来る災害に備えることを目的とするものである。特に、先進的な事例としては、ワークショップのカリキュラムの中に災害図上訓練 (DIG) を組み込み、情報や体験を共有する中で、関係者全体によるハザードマップづくりや防災力向上のための取り組みを企画推進を図る取り組みなどが散見されるようになってきた。21世紀になり、災害やテロなど多様な危機を抱えるマルチハザード時代の到来といわれる中で、この防災まちづくりの取り組みが広く市町村一般において取り組まれていくことが望まれるところである。
防災まちづくりの主な事業 > 延焼遮断帯

大規模な地震等で市街地大火を阻止する機能を果たす、道路、鉄道、公園等の都市施設と、沿線の範囲に建つ耐火建築物で構築される帯状の不燃空間である。
防災まちづくりの主な事業 > 防災生活圏

既往コミュニティの活動範囲を目安に日常的な生活圏を基本として、道路や公共不燃化建物による延焼遮断帯で囲まれた小、中学校区程度の区域をいう。防災生活圏ごとに避難場所となる公園整備を図り、防災拠点となる公共施設に隣接させるなど、防災まちづくりの基本単位としている。
防災まちづくりの主な事業 > 防災環境軸

密集市街地の防災性を効率的に向上させるため、都市計画道路の整備と一体的に沿道の建築物の不燃化を促進し、避難路・延焼遮断帯として機能する空間を形成する事業。実施例として、一之江駅西部(東京都江戸川区)、淡路駅周辺(大阪市)、浜山(神戸市)、段原東部(広島市)、原良第三(鹿児島市)など。
防災まちづくりの主な事業 > 防災安全街区

道路、公園等の都市基盤施設が整備されるとともに、医療、福祉、行政、避難、備蓄等の機能を有する公共施設・公益施設が集中立地し、相互の連携により被災時における最低限の都市機能を維持できる街区。普段からの安心まちづくり、非常時の危機管理に対応したまちづくりを実現することを日的としている。次世代の都市として環境、エネルギー、情報通倍等と連動したエコシティの一部として整備されることが望まれている。
防災まちづくりの主な事業 > 防災街区整備事業

防災街区整備事業を参照。
密集市街地整備法に基づき、建築物の権利変換による土地、建物の共同化によって、老朽化した建築物を除却し、防災性能を備えた建築物および公共公益施設の整備を行う公共事業。防災街区整備地区計画として、地区の防災性の向上を目的とする地区計画を適用する。その上で密集市街地における耐火建築物の整備、不燃化促進、敷地広さに関する制限等を定め、道路、公園等の防災公共施設の整備とともに、災害に強い街区の形成を図る市街地開発事業。
防災まちづくりの主な事業 > 防災まちづくり事業

地域の地理的、気候的条件や都市構造、地域の実情に応じた災害に強い安全なまちづくりを促進するため、1986年から2001年まで行われた公共事業。現在は防災基盤整備事業および公共施設等耐震化事業に継承され、防災拠点施設整備や建物の不燃化と耐震化を推進している。
防災まちづくりの主な事業 > 防災拠点

→詳細は「防災拠点」を参照
地震等の大規模な災害が発生した場合、被災地において救援．救護などの災害応急活動の拠点、拠点となる施設。的確な情報提供、災害対策の体制構築、計画実施、救援救助や応急復旧活動、負傷者等の安全な受け入れ、医療支援等、復旧活動の中心となる。防災計画で当該県庁や市役所役場、消防署、警察署、学校、病院、大規模な公園等が指定されている。
防災まちづくりの主な事業 > 防災公園

防災公園は、安全、安心な都市づくりを図るため、地震災害時の復旧・復興拠点や中継基地となる防災拠点、周辺地区からの避難者を収容し、市街地火災から避難者の生命を保護する避難地として機能する地域防災計画に付置づけられる都市公園等を言う。
地域防災計画に基づき、公園には広域避難基地機能、備蓄倉庫耐震付貯水槽、放送・情報通信施設、ヘリポート、延焼防止用散水施設が整備される。
防災まちづくりの主な事業 > 防災公園 > 防災公園街区整備事業

公庫補助事業として、防災公園街区整備事業(住宅市街地総合整備事業制度要綱に基づく密集住宅市街地整備型重点整備地区を含む整備地区)がある。災害に対し脆弱な構造となっている大都市地域等の既成市街地において、防災機能の強化を図ることを目的として、地方公共団体の要請に基づき、都市再生機構が主に上記市街地に生じる工場跡地等を機動的に取得して防災公園の整備と市街地整備を一体的に推進する防災まちづくり事業であり、地域防災計画その他の地方公共団体が策定する防災に関する計画において、避難地若しくは防災活動拠点として位置づけられるものまたは位置づけられることが確実なものを含んだものが、おおむね1ヘクタール以上、用地取得が困難で緊急を有するものは0.7ヘクタール以上、密集市街地緊急リノベーション事業の整備計画に位置づけられるものは1,500平方メートル以上の防災公園の整備を、事業用地の相当部分を防災公園として整備し、公園の整備と併せて行われるべき市街地の整備改善を図る。木造の建築物が密集しており、かつ十分な公共施設がないことや、その他当該地域の土地利用の状況から防災機能が確保されていないと認められる市街地が存する地域を対象地域とし、首都圏・中部圏・関西圏・九州圏といった大都市地域の既成市街地及びこれらと連担し一体の市街地を形成する地域、大規模地震対策特別措置法に基づく地震防災対策強化地域内の既成市街地、東南海・南海地震に係る地震防災対策の推進に関する特別措置法に基づく東南海・南海地震防災対策推進地域内の既成市街地、日本海溝・千島海溝周辺海溝型地震に係る地震防災対策の推進に関する特別措置法に基づく日本海溝・千島海溝周辺海溝型地震防災対策推進地域内の既成市街地、地震予知連絡会が平成19年度までに指定していた観測強化地域又は特定観測地域内の既成市街地が該当とされるが、これ以外にも都市再生プロジェクトで第三次決定に基づく特に大火の可能性の高い危険な市街地およびその周辺地域、密集法第３条の防災再開発促進地区、住宅市街地総合整備事業制度要綱に基づく密集住宅市街地整備型重点整備地区を含む整備地区と、これらの密集市街地の整備改善に資する事業の用に供する土地も、既成市街地の防災上危険性の高い密集市街地が存する地域も該当となる。
防災まちづくりの主な事業 > 防災公園 > 防災公園街区整備事業 > 防災公園街区整備事業の実施事例

杉並区桃井三丁目地区桃井原っぱ公園・インザパーク荻窪サウステラス（日産自動車の工場跡地）
高槻市八丁畷地区
市川市大洲防災公園 (明治乳業の工場跡地)
摂津市千里丘四丁目地区防災公園
鎌倉市岩瀬下関防災公園
神戸市浜辺通地区みなとのもり公園（神戸震災復興記念公園）
東京都北区西ヶ原四丁目地区西ヶ原みんなの公園・アルティス西ヶ原パークヒルズ. 老人ホーム飛鳥晴山苑（外語大跡地公園）
三鷹市新川防災公園・多機能複合施設（仮称）整備（市民センター周辺地区防災公園街区整備事業・東京多摩青果三鷹市場跡地、新川6丁目）
大阪府八尾市南木の本三丁目地区
高槻市古曽部町3 丁目地区曽部防災公園
大阪府枚方市北片鉾町地区
兵庫県宝塚市末広町地区末広中央公園
千葉県柏市中原一丁目地区
脚注・参考文献

財団法人消防科学総合センター『地域防災データ』1992年、2頁。
[脚注の使い方]
Java

| --- | --- |
: この項目では、プログラミング言語について説明しています。その他の用法については「ジャバ」をご覧ください。
| --- | --- |
: 「JavaScript」とは異なります。
| --- | --- |
パラダイム:  オブジェクト指向, コンポーネントベース, リフレクティブ, ジェネリック, 関数型, 並行プログラミング
登場時期:  1995年5月23日α版 1995年秋β版 1996年1月23日 (1996-01-23)ver1.0
設計者:  Java Community Process
開発者:  サン・マイクロシステムズ、オラクル 
最新リリース:  Java Standard Edition 23.0.2/ 2025年1月21日 (26日前) (2025-01-21)
型付け:  強い静的型付け
主な処理系:  Javaプラットフォーム
影響を受けた言語:  C++, Ada, Eiffel, Mesa, Modula-3, Objective-C
影響を与えた言語:  C#, D, Dart, Groovy, Scala, Kotlin, Ceylon
プラットフォーム:  Solaris, Linux, Windows, macOS, AIX, System i
ライセンス:  GNU General Public License、Java Community Process
ウェブサイト:  www.oracle.com/java/ 
拡張子:  java、class、jar
テンプレートを表示
他のプログラミング言語
■カテゴリ / ■テンプレート
Java（ジャバ、ジャヴァ）は、汎用プログラミング言語とソフトウェアプラットフォームの双方を指している総称ブランドである。オラクルおよびその関連会社の登録商標である。1996年にサン・マイクロシステムズによって市場リリースされ、2010年に同社がオラクルに吸収合併された事によりJavaの版権もそちらに移行した。
プログラミング言語Javaは、C++に類似の構文、クラスベースのオブジェクト指向、マルチスレッド、ガベージコレクション、コンポーネントベース、分散コンピューティングといった特徴を持ち、平易性重視のプログラム書式による堅牢性と、仮想マシン上での実行によるセキュリティ性およびプラットフォーム非依存性が理念とされている。Javaプラットフォームは、Javaプログラムの実行環境または、実行環境と開発環境の双方を統合したソフトウェアであり、ビジネスサーバ、モバイル機器、組み込みシステム、スマートカードといった様々なハードウェア環境に対応したソフトウェア形態で提供されている。その中枢技術であるJava仮想マシンは各プラットフォーム環境間の違いを吸収しながら、Javaプログラムの適切な共通動作を実現する機能を備えている。このテクノロジは「write once, run anywhere」と標榜されていた。
2019年の時点でGitHubによると、Javaは特にクライアント/サーバモデルのWebアプリケーションで使用されている最も人気の高いプログラミング言語の1つであり、全世界でおよそ900万人の開発者がいるとレポートされている。最新バージョンは、2024年9月にリリースされたJava 23と、2023年9月にリリースされたJava 21の長期サポート（LTS）版である。オラクルは未解決のセキュリティ問題によるリスクを回避するために、旧バージョンのアンインストールと新バージョンへの移行を強く推奨している。
Javaの特徴

現在の正規ベンダーであるオラクルの公式アピールは、以下の通りである。特に業務用システムの構築に最適であるとしている。
Java reduces costs, shortens developer timeframes, drives innovation, and improves application services as the programming language of choice for enterprise architecture, finance, and HR. Java is used in many industries including manufacturing, automotive, insurance, and public sector.

Javaは、コストを削減し、開発者の時間枠を短縮し、イノベーションを促進し、エンタープライズアーキテクチャ、財務、およびHRに最適なプログラミング言語としてアプリケーションサービスを改善します。 Javaは、製造・自動車・保険・公共部門などの多くの業界で使用されています。
オラクルによると、全世界の3億のコンピュータデバイスでJava実行環境が動作しており、全世界の200万の人員がJava開発環境を使用しており、全世界で250億枚のJava Cardが発行されている、と統計されている。
Javaの特徴 > Javaの構文

→詳細は「Javaの文法」を参照
Javaプログラム構文は、C++によく似たものである。オブジェクト指向言語の一面が強調されがちだが、C言語のような手続き型言語としてもプログラミングできる。Javaはオブジェクト指向パラダイムをそれほど強制しない。
Javaは、同時にマルチパラダイム言語でもある。JDK 1.1でJavaBeans/JavaRMI/CORBAによるコンポーネントプログラミングと、リフレクションAPIによるメタプログラミングが備えられた。J2SE 5.0でジェネリクス構文/APIによるジェネリックプログラミングが追加された。Java SE 7で並行APIによる並行プログラミングが追加された。Java SE 8ではラムダ式/関数型インターフェース/ストリームAPIなどによる関数型プログラミングが追加された。2014年（Java 8）以降の関数型とジェネリクスを多用しているJavaプログラムは、それ以前のJavaプログラムから大きく様変わりしている。
Javaの特徴 > オブジェクト指向

→詳細は「オブジェクト指向プログラミング」を参照
Javaは、クラスベースのオブジェクト指向である。クラス、インターフェース、インスタンスといった概念を中心にしたものである。クラスのメンバ要素は、フィールド、メソッド、静的フィールド、静的メソッド、定数、内部クラス、コンストラクタ、ファイナライザである。インターフェースは抽象メソッドと定数で構成される純粋抽象クラスである。クラスはインスタンスのひな型であり、インスタンスはクラスを実体化したものである。Javaプログラムは、1個以上のクラス定義文から形成される。Javaのクラスはカプセル化、継承、多態性をサポートしている。
カプセル化は、クラスメンバの可視性 (private, package, protected, public) でサポートされている。可視性とはメンバのアクセス許可範囲を定めるものであり、privateは同クラス内限定、packageは同クラス内と同パッケージ内限定、protectedは同クラス内と同パッケージ内と派生クラス内限定、publicは制限なしを意味する。パッケージはプログラム全体を任意に分割したソースファイルの1個以上のまとまりである。Javaのデフォルト可視性は、ファイル単位のpackageなので隠蔽性よりも利便性が重視されている。
継承は、スーパークラスが一つに限られる単一継承をサポートしている。多重継承は不可である。既存クラスに任意メンバを追加した新規クラスを作成できる。Javaの全クラスはObjectクラスをルートクラスとしてデフォルト継承する。Objectクラスにはロック機能が備えられており、これは並行プログラミングを前提にした仕様である。
多態性は、仮想関数、抽象クラス、インターフェース、動的ダウンキャストでサポートされている。スーパークラスのvirtualメソッドを、サブクラスの同名メソッドでオーバーライドできる機能を仮想関数と言う。スーパークラス変数にサブクラスインスタンスを代入してその変数からサブクラスのメソッドが呼ばれるようにするのは、サブタイピングになる。インターフェースは抽象メソッドだけの純粋抽象クラスであり、任意の数だけクラスに実装できる。実行時ダウンキャストはinstanceof演算子の実行時型チェックが可能で、ダウンキャスト失敗時は例外発生する。
Javaの特徴 > プラットフォーム非依存

→詳細は「Java仮想マシン」を参照
プラットフォーム非依存とは、Javaプログラムが特定のハードウェアやオペレーティングシステムに依存せずに、あらゆる環境での共通動作を保証する概念である。”Write once, run anywhere”（一度プログラムを書いてしまえば、どのコンピューターでも動くよ）とされる。Javaのプラットフォーム非依存性は次のようにして実現されている。
Javaコンパイラは、Javaソースコードを、Javaバイトコードという中間表現にコンパイルする。Javaバイトコードは、Java仮想マシン用の実行コードである。Javaバイトコードは通常、Javaクラスファイルにまとめられる。
Java仮想マシンは、各プラットフォームの差異を吸収するクッション的なソフトウェアである。Java仮想マシンは、様々なコンピュータ環境対応バージョンが提供されており、各プラットフォームにJava実行環境の中核としてインストールされる。
Java仮想マシンは、任意のJavaクラスファイルをJavaクラスローダーで読み込み、そのJavaバイトコードを解釈実行する。インタプリタ式の解釈走行と、実行時コンパイラで解釈走行させるものがある。
Java初期のインタプリタ式で走行されるJavaプログラムの実行速度は遅かったが、実行時コンパイラ技術と動的再コンパイル技術 (dynamic recompilation) の導入によって実行速度問題はほぼ解決した。実行時コンパイラとは、一定のJavaバイトコードをまとめてネイティブコードにコンパイルして継続的に実行させる技術である。Java仮想マシンはメモリ境界とバッファオーバーフローのチェックを行いながらプログラムを走行させる。また、クラスロード時のバイトコード検証機能によって、あからさまなコード暴走や致命的エラーの頻発を事前抑止している。
Javaの特徴 > マルチスレッド

→詳細は「マルチスレッド」を参照
Javaプログラムは、複数以上のスレッドを同時走行できる。これをマルチスレッドと言う。多数のスレッドを扱う大規模システムにも対応しており、例えばスレッドグループAPIは、スレッドたちを役割や性質でグループ化して一括操作できる。これはクライアント・サーバシステムの実装向けである。また、多数の断続的トランザクションをさばくシステムにおいて発生しがちなスレッド生成/破棄の反復による負荷増大を回避するための、スレッドプールとタスクキューを合わせたスレッドモニタAPIも用意されている。
Javaのマルチスレッド並行計算は、クリティカルセクション同期が基準にされている。Javaの全インスタンスは、ロック機能を備えているObjectクラスをルート継承しているので、クリティカルセクションのロックオブジェクトにできる。Javaではsynchronizedで指定された範囲がクリティカルセクションになる。Javaの標準ロック手法は、ミューテックスのモニタである。synchronizedメソッドはその全体が排他セクションになり、そこではThisインスタンスがロックオブジェクトになる。synchronized静的メソッドでは、システム内の専用インスタンスがロックオブジェクトになる。また、synchronized(指名変数)構文でメソッド内の任意範囲をクリティカルセクションにして、そこでは指名変数がロックオブジェクトになる。
ミューテックスのモニタ以外の、カウントセマフォやバリアや読み書きロックなどのロック手法は、並行APIの方で用意されている。
Javaの特徴 > ガベージコレクション

→「ガベージコレクション」も参照
Javaプログラムのメモリ管理は、Java仮想マシンのガベージコレクションによって行われる。ガベージコレクションとは、すでにどこからも参照されていないインスタンスを自動的に特定して破棄し、その占有メモリ領域を自動的に解放する機能である。人の手によるオブジェクトの生成と破棄を正確に対応させるメモリ管理作業は煩雑化するのが常であり、メモリリークや不正リリースによるエラーを引き起こしやすく、バグの温床と化すのが通例であった。それらを自動化したガベージコレクションは、Javaプログラマを複雑なメモリ管理作業から解放する。
ガベージコレクタのプロセスは、システムスレッドに乗って未参照のインスタンスを探し続ける。どこかの末端だけが途切れている参照の連鎖のかたまりも正確に特定して、参照の孤島に例えられたメモリ領域を一気に解放する。Javaではガベージコレクション機能に並々ならぬ力が入れられており、その技術更新は現在も進行中である。世代別ガベージコレクタ、応答時間短縮化のレイテンシ重視ガーベジコレクタ、休止時間短縮化のスループット重視ガーベジコレクタなどが導入されて更に改訂を重ねており、運用環境別の選択使用も可能にされている。
Javaの特徴 > 分散コンピューティング

→「分散コンピューティング」も参照
Javaの分散コンピューティングプログラミングは、オブジェクト要求ブローカーに準拠している。これはネットワーク上に存在する様々なプラットフォームの間で、互いに異なる環境を意識せずにリクエストとレスポンスを送りあい任意のタスクを遂行する分散システムの構築をサポートする。各プラットフォーム上で稼働されるサーバアプリケーションとクライアントアプリケーションは、それぞれオブジェクトを内包しており、業界共通規格のCORBAまたはJava独自規格のRMIが提供する運用アーキテクチャと通信プロトコルを通して、他のオブジェクトと相互にコミュニケーションする。それらは分散オブジェクトと呼ばれている。
業務用システムではすでにCORBAが普及していたので、高パフォーマンスだがJavaプラットフォーム間の限定になるRMIはその後追いであった。そのためRMIはCORBAと連携できるようにRMI over IIOPなどの様々な技術が実装されている。CORBAの通信プロトコルはIIOP、RMIの方はJRMPである。分散オブジェクトを実装するためのAPIとクラスライブラリの多くはJakarta EEに属している。分散オブジェクトの中でサーバ機能に特化されたものはEJB (Enterprise JavaBeans) と呼ばれている。
EJBは、クライアントと同期通信を行いトランザクションを管理するセッションビーン、データベースとリンクして永続データを管理するエンティティビーン、様々なイベントからの非同期通信を管理するメッセージドリブンビーンの三種に大別される。これらのEJBは、EJBコンテナに内包されて運用される。分散オブジェクト同士が通信するためのプロトコルは、IIOPかJRMPが使われる。JNDIは、照会された識別名からネットワーク上の分散オブジェクトや各種リソースのロケーションを特定して通信ないしアクセスできるようにする。
EJBコンテナは、WEBコンテナと連携して運用されるのが普通である。EJBコンテナはWEBコンテナを一般的なクライアント窓口として使用することが多い。WEBコンテナはサーブレットとJSP（Java Server Pages）を内包しているWEB用サーバアプリケーションであり、HTTPプロトコルを通して一般的なWEBブラウザとの同期通信を行う。WEB方面の分散オブジェクトは、WEBコンポーネントと呼ばれる。JSPはいわゆるWEBサイトの表示に特化したコンポーネントである。サーブレットはWEBサイトへのリクエストを処理し、場合によってはセッションビーンにトランザクションを委譲するコンポーネントである。EJBコンテナではJBossやWebSphereなどが有名である。EJBコンテナはWEBコンテナと統合されて提供されている事が多い。WEBコンテナではApache Tomcatが有名である。
Javaの特徴 > セキュリティ

→「サンドボックス (セキュリティ)」も参照
分散ネットワークプログラミングを重視しているJavaは、サンドボックスモデルに基づいたセキュリティ機構を備えている。これは遠隔ダウンロードされた追加プログラム（Javaバイトコード）による実行環境への予期せぬ操作やユーザー資源への好ましくないアクセスを防止するためのものである。分散（distributed）指向のJavaプログラムでは、Javaクラスファイルを遠隔ロードする機会が多いので、サンドボックス実行は必須になる。Javaのサンドボックスは、大抵は以下の手順になる。
クラスローダーは、バイトコードをダウンロードして順次クラス化する。
実行環境内のセキュリティポリシーファイルに従って、各種パーミッションが各クラスに付与される。セキュリティポリシーは主に、クラス名とそのパーミッションのペアで記述されている。
実行環境に元からあるクラスは、オールパーミッション付与がデフォルトである。
スレッドがリソースアクセスなどの操作をする度に、セキュリティマネージャが現行のパーミッションを調べて対象外なら例外を発生させる。
その際は、スレッドの各通過メソッドのクラスのパーミッションが全チェックされ、原則的に最少パーミッションの方に合わせる。
遠隔ロードされたappletクラスなどのパーミッション皆無のクラスのメソッドを一度でも通ったスレッドは、完全なサンドボックス実行になりほとんどのリソースにアクセスできなくなる。
実際には上記に加えて、各クラスを役割やセキュリティレベルでまとめるドメイン機構、認証と承認によるユーザーパーミッション機構、バイトコード送受信時の署名付き証明書機構などが組み合わされて実装運用される。
Javaの歴史 > 誕生の経緯

家電向けプロジェクトの立ち上げ（1990年12月）
Javaの歴史は、1990年12月にサン・マイクロシステムズ（サン）が、次世代の家電製品が内蔵するマイクロコントローラ向けのプログラミング言語を開発するための水面下プロジェクトをリサーチ段階を兼ねて試験的に立ち上げた事から始まる。サンはこの分野が今後の重要市場になると予測していた。サンのエンジニアであるジェームズ・ゴスリンやパトリック・ノートンらの参加により、現実味を帯びたプロジェクトの名称は正式に「グリーンプロジェクト」と定められた。彼らはカリフォルニア州メンローパーク市サンドヒルロードに用意された比較的小さなオフィスで開発を始めた。
Oak言語とGreen OSの誕生（1991年）
グリーンチーム内では当時の主流であったオブジェクト指向を採用する事で一致していた。彼らはそのモデル言語であるC++に白羽の矢を立て、当初はその移植版を検討していたが、プロジェクトの対象が家電製品の組み込みシステムであったために自然と却下された。C++の複雑な言語仕様はコンピュータ資源の浪費とプログラムエラーの発生率を高めがちであり、堅牢性と安全性が最重要の家電製品の制御装置には不向きであると判断されたためだった。加えてC++では移植性に対応できない点も指摘され、プラットフォーム非依存も重要な議題として提起された。彼らはC++に代わる言語の開発と同時に、あらゆる機器に容易に移植できるプラットフォームの必要性も認識するようになった。こうして新言語プログラムの動作環境になる「Green OS」の開発も始められた。
一方で、Mesa言語とC言語の長所を理想にしていたサンのエンジニアのビル・ジョイは、C++をモデルにした新しいオブジェクト指向言語の開発を提案するワーキングペーパーにFurtherという題名を付けて自社に上申した。それを受けてまずジェームズ・ゴスリンがC++の拡張言語を提出した。ゴスリンはこれを「C++ ++ --」と名付けたがすぐに取り下げ、改めて一から設計しなおしたプログラミング言語を1991年秋に誕生させた。オフィスの側に立つオークの木を眺めながら開発を進めていたゴスリンは、この新しい言語に「Oak」という名前をつけた。これがJavaの前身である。
携帯端末、テレビ機器市場への参入と撤退（1992年 - 1994年5月）
1992年夏にはGreen OSを実際の機器に載せてOakプログラムを実行できるようになっていた。この頃になるとより広範囲な可能性を秘めるようになったグリーンプロジェクトの対象は当初の家電機器から、当時のトレンドであった携帯情報端末 (PDA)へとシフトされていた。1992年9月3日に最初のデモンストレーションが開催され「Star7」という名のPDA機器がOakプログラムの初のお披露目舞台になった。このStar7のユーザーインターフェース上で後のマスコットキャラ「Duke」が初登場している。
1992年11月、サンはファーストパーソンという会社を設立しグリーンチームをそちらに所属させた。次世代のインタラクティブ機器に関心を持つファーストパーソンは、ケーブルテレビ用セットトップボックス事業への参入を決めて、タイム・ワーナーと3DOにそれぞれOakテクノロジを提示した。しかし、その余りに高度な柔軟さが却って倦厭されてしまい契約実現には到らなかった。サン本社はファーストパーソンの解散を決め、グリーンチームも本社に戻された。
ワールドワイドウェブ参入（1994年6月〜1994年9月）
1994年6月、サン技術部長ジョン・ゲージがジェームズ・ゴスリン、ビル・ジョイ、パトリック・ノートン、エリック・シュミットら集めて、延べ3日に渡るブレインストーミングが行われた。ここで彼らはワールドワイドウェブをプロジェクトの本命に据える事で一致した。革新的なウェブブラウザである「NCSA Mosaic」の登場に触発された彼らは、インターネットの世界がケーブルテレビのそれを超えたインタラクティブな媒体に発展しつつある事を認識していた。パトリック・ノートンはOakテクノロジをベースにした「WebRunner」という小さなウェブブラウザを開発した。Oakによる小さなアクティブプログラムが埋め込まれたウェブページにアクセスすると、WebRunner上でマウス操作に連動するインタラクティブなアニメーションが表示された。
Javaの始動（1994年10月～1996年1月）
1994年秋までにグリーンチームは、Oakを「Java」に、WebRunnerを「HotJava」に改称した。Green OSは「Java Runtime Environment」に落とし込まれた。改称の理由はOakがすでにビデオカードアダプタ製造会社の登録商標になっていたからだった。この命名は一部のチームメンバーがよく出入りしていた近くのコーヒーショップで決定されたと言われる。Javaの由来は不明とされているが、ロゴが示している通りコーヒーに因んでいるのは明らかである。ジャワ島はコーヒー豆の名産地であり、豆（Bean）はJavaテクノロジ内でコンポーネントを指す用語にされている。
1994年10月、JavaランタイムとHotJavaブラウザがサンの幹部社員たちの前でデモンストレーションされた。1995年5月にアルファ版が社内公開され、5月23日のSunワールドカンファレンスで、JavaランタイムとHotJavaブラウザが社外初披露された。ここではJavaアプレットの技術がセールスポイントとしてアピールされた。同時にネットスケープが「Netscape Navigator」ブラウザへのJavaアプレット機能導入をアナウンスして業界の注目を集めた。1995年秋にベータ版が社外公開された。1996年1月9日にサンは、正式にJavaソフトウェア部門を立ち上げた。基幹テクノロジは市場リリース段階まで進捗していたが、その他のテクノロジは未だ途上段階であり、プラットフォームと呼べる域までは達しておらず、初回リリースのプロダクト名は、Javaランタイム環境を内包したデヴェロップメントキットになった。1月23日に最初の公開バージョンである「JDK 1.0」が市場リリースされた。
Javaの歴史 > バージョン履歴

→詳細は「Javaバージョン履歴」を参照
| バージョン | リリース日 |
| --- | --- |
JDK Beta: 1995年
JDK1.0: 1996年1月23日
JDK 1.1: 1997年2月19日
J2SE 1.2: 1998年12月8日
J2SE 1.3: 2000年5月8日
J2SE 1.4: 2002年2月6日
J2SE 5.0: 2004年9月30日
Java SE 6: 2006年12月11日
Java SE 7: 2011年7月28日
Java SE 8: 2014年3月18日
Java SE 9: 2017年9月21日
Java SE 10: 2018年3月20日
Java SE 11: 2018年9月25日
Java SE 12: 2019年3月19日
Java SE 13: 2019年9月17日
Java SE 14: 2020年3月17日
Java SE 15: 2020年9月15日
Java SE 16: 2021年3月16日
Java SE 17: 2021年9月14日
Java SE 18: 2022年3月22日
Java SE 19: 2022年9月20日
Java SE 20: 2023年3月21日
Java SE 21: 2023年9月19日
Java SE 22: 2024年3月19日
Java SE 23: 2024年9月17日
Javaプログラミング例

→詳細は「Javaの文法」を参照
Javaプログラミング例 > Hello World

// Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
Javaプログラムでは全てのフィールドとメソッドがclass内に記述される。
Javaプログラムは静的メソッドpublic static void main (String[] args)から開始される。argsはプログラム開始時のコマンドライン・パラメータである。
System.outはSystemクラスの静的フィールドoutを意味する。outはPrintStream型のインスタンスである。out.println("文字列")はoutのprintlnメソッドを呼び出す。
Javaプラットフォーム

→詳細は「Javaプラットフォーム」を参照
Javaプラットフォーム (Java Platform) は、Javaプログラムを開発または実行する為のソフトウェア群の総称である。Javaプラットフォームは対象環境に合わせて、Java実行環境およびJava開発環境の構成内容と、Javaテクノロジの追加内容を変えたエディションに編集されて公開されている。Javaテクノロジは権利元ベンダーだけでなくサードパーティー側からも提供されており、その標準化はJavaコミュニティプロセス (JCP) が管理している。Java実行環境とJava開発環境はオープンソース化されているので各企業、各団体、開発者各自が営利または非営利で様々なソフトウェアと関連技術を公開しており、巨大なITエコシステムを構築している。
Javaプラットフォーム > エディション

2019年現在、Java権利元のオラクルは、対象環境に合わせたJavaプラットフォームの4つのエディションを公開している。エディションによってJava実行環境とJava開発キットに含まれるツール構成に違いがあり、またクラスライブラリとAPIの構成内容も異なっている。Java仮想マシンの性能にも差異がある。JDK 1.1までは単体エディションで、J2SE 1.2から3エディションに分かれた。J2SE 5.0頃から拡張テクノロジの一つであったJava Cardが昇格して4エディションとなった。
Javaプラットフォーム > Java実行環境 (JRE)

→詳細は「Java Runtime Environment」を参照
Java実行環境 (Java Runtime Environment; JRE) は、Javaアプリケーションを実行するために必要なソフトウェアである。Java仮想マシン、''Java.exe''のスターターを含めた各種実行サポートツール、Javaクラスライブラリで構成される。Java実行環境の中核はJava仮想マシンである。エディション毎に仮想マシンの仕様と性能は異なっており、また実行時は複数の動作モードを持つ。仮想マシンはスターターを通して稼働されるのが普通である。様々な使用状況に対応したスターターが最初に実行されて、そこから仮想マシンが呼び出されてJavaプログラムの実行を移譲される。仮想マシンはJavaクラスライブラリを逐次読み込みながらJavaプログラムを実行する。Java実行環境のツール内容とクラスライブラリ構成は、エディション毎に違いがある。
Javaクラスライブラリは、普遍的に呼び出される特定の機能を実装したクラスの集合体である。Javaプログラムはライブラリ内のクラスを逐次呼び出しながら処理を実行する。なお、それぞれのJavaクラスライブラリ内部からプログラマの利用に向けて外部公開されている部分を「Java API」と呼ぶ。
基礎ライブラリ - Java言語の基礎を扱う。
入出力ライブラリ - ファイル入出力など。
コレクションライブラリ - 動的配列と動的連想配列。データ集合の操作。
数学ライブラリ - 各種計算を扱う。
国際化地域化ライブラリ - 暦、日付、時間、通貨、文字コードなどの国際化と地域化を扱う。
ネットワークライブラリ - ソケット通信を扱う。
GUIライブラリ - グラフィカル・ユーザーインターフェースを扱う。
アプレットライブラリ - アプレット生成用。
Javaビーンズライブラリ - ソフトウェアコンポーネント作成用。
データベース接続ライブラリ - SQLを扱う。
リモートメソッドライブラリ - 分散オブジェクトを扱う。
セキュリティライブラリ - セキュリティポリシー、ユーザー認証と権限承認、公開鍵暗号方式など。
Java実行環境に用意されている特定のJavaクラスライブラリを利用する事でJavaプログラムは結果的に、以下の四種類のアプリケーション形態に派生する。
Javaプラットフォーム > Java開発キット (JDK)

→詳細は「Java Development Kit」を参照
Java開発キット (Java Development Kit) は、Javaプログラムを開発するために必要なソフトウェアである。Java実行環境も内包している。Javaコンパイラなどの基本開発ツール、各種開発サポートツール、Java APIで構成されている。前述のエディションによって開発ツール内容とAPI構成に違いがある。Java開発キットの呼称はこれまでに何度か変更されている。
J2SE 1.2.2_004 までは、JDK (Java Development Kit) と呼んでいた。
J2SE 1.4 までは、Java2 SDK (Java2 Software Development Kit) と呼んでいた。
J2SE 5.0 からは再び、JDK (Java Development Kit) と呼んだ。
JavaSE 7 からは、エンタープライズ版とマイクロ版では Java SDK (Java Software Development Kit) と呼び、スタンダード版とカード版では JDK (Java Development Kit)と呼ぶようになった。JDKはSDKの拡張サブセット（SDKの一部分＋その他）とされる。
APIは、アプリケーション・プログラミング・インタフェースの頭字語であり、Javaクラスライブラリ内部からプログラマに向けて外部公開されているクラス、インタフェース、メソッド、フィールド、定数の集合である。プログラマはこれを用いて各種ソフトウェアの開発を行う。APIは基本的にクラスライブラリの所属に沿って、パッケージ (package) と呼ばれる名前空間で分類されて提供されている。パッケージは各ワードをピリオドで連結して階層化されている。先頭ワードのjavaは開発元提供の純正基礎版を意味する。他に純正拡張版のjavax、任意団体提供のorg、企業提供のcomがある。
java.lang - Java言語の基礎を扱う。
java.io - ファイル入出力など。
java.util - 動的配列と動的連想配列。データ集合の操作。
java.math - 各種計算を扱う。
java.text - 暦、日付、時間、通貨、文字コードなどの国際化と地域化を扱う。
java.net - ソケット通信を扱う。
java.awt - グラフィカル・ユーザーインターフェイスを扱う。
java.applet - アプレット生成用。
java.beans - ソフトウェアコンポーネント作成用。
java.sql - SQLを扱う。
java.rmi - 分散オブジェクトを扱う。
java.security - セキュリティポリシー、ユーザー認証と権限承認、公開鍵暗号方式など。
統合開発環境 (IDE)は、JDKを中核にしてビジュアルエディターやビルドマネジャーなどの様々な開発支援機能を備えたソフトウェアである。JDKのみだと、メモ帳でプログラムを書きコマンドラインでコンパイルしコンソールでデバッグをするという極めて原始的な作業になるが、IDEを使用する事で多機能エディタコーディングとビルド過程の自動化と視覚的なデバッグが可能になる。Java開発用のIDEは様々な企業と任意団体から公開されている。
NetBeans - （サン・マイクロシステムズ→オラクル）オープンソースIDE。NetBeans.org NetBeans.jp。
Eclipse SDK - （IBM→Eclipse財団）オープンソースIDE。Java用IDEの共通基盤存在である。ここからWebSphere Studio、JBuilderなど様々なIDEが派生している。eclipse.org EclipseWiki。
WebSphere Studio -（IBM）商用IDE。Eclipseに有料プラグイン機能を組み合わせたもの。現在はアップデート停止。WebSphere。
IBM Rational（英語版） -  (IBM) Rationalブランド商用IDE。WebSphere Studioの後継製品。
JBuilder - （ボーランド→エンバカデロ・テクノロジーズ）商用IDE。JBuilder2007からEclipseベースになっている。JBuilder。
Oracle JDeveloper - （オラクル）Oracle Application Serverと統合されている。2005年6月28日に無料化した。JDeveloper。
Oracle Workshop for WebLogic - （BEAシステムズ→オラクル）WebLogic（英語版）と統合されている。Oracle Workshop。
BlueJ - （サン・マイクロシステムズ、豪ディーキン大学、英ケント大学の共同開発）フリーIDE。BlueJ。
IntelliJ IDEA - (JetBrains) 商用IDE。Android Studioのベースになった。IntelliJ IDEA。
JCreator - (Xinox Software) 商用IDE。JCreator。
Xcode - （Apple）macOSに付属するIDE。
開発サポートツールは、プロジェクト管理、自動ビルド、デバッグ、モニタリングを容易にする。下記の他にも多くの支援ツールが存在する。
Apache Ant - Javaアプリケーションのビルドツール。Apacheソフトウェア財団のプロジェクトによって開発された。コンパイル、バージョン管理システムとの連携、jar、javadoc生成、ファイルのコピー/移動/削除/変換などの一連の処理を自動化して効率的に実行する。make と同種のツールであり、XMLファイルにビルドの規則を記述する。Java 以外の言語によるアプリケーション開発や、アプリケーション開発以外の用途にも使うことができる。
Apache Maven - Javaアプリケーションのプロジェクト管理ツール。Apacheソフトウェア財団のプロジェクトによって開発された。
Gradle - Apache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システム。
JUnit - Javaアプリケーションの単体テストフレームワーク。単体テストを自動化する。xUnitの一種である。テスト駆動開発を支援する。
Javaプラットフォーム > Javaテクノロジの数々

→詳細は「Java Community Process」を参照
Javaテクノロジは、個人を含む各種組織から様々な形態で公開されている。開発元から提示された技術は、Java Community Process (JCP) による審査を合格した後にJavaテクノロジの一つとして認証される。これを標準化 (standardization) と言う。Javaテクノロジが準拠すべき規範仕様は、JCP管理下で発行される数々のJava仕様要求 (Java Specification Request) にて定義されている。Javaテクノロジは様々な分野に導入されている。その一例を以下に列挙する。