Java

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Java
パラダイム オブジェクト指向, コンポーネントベース, リフレクティブ, ジェネリック, 関数型, 並行プログラミング
登場時期 1995年5月23日α版
1995年秋β版
1996年1月23日ver1.0
設計者 Java Community Process
開発者 サン・マイクロシステムズオラクル ウィキデータを編集
最新リリース Java Standard Edition 22.0.1/ 2024年4月16日 (46日前) (2024-04-16)
型付け 強い静的型付け
主な処理系 Javaプラットフォーム
影響を受けた言語 C++, Ada[1], Eiffel[2], Mesa[3], Modula-3[4], Objective-C[5]
影響を与えた言語 C#, D, Dart, Groovy, Scala, Kotlin, Ceylon
プラットフォーム Solaris, Linux, Windows,
macOS, AIX, System i
ライセンス GNU General Public LicenseJava Community Process
ウェブサイト www.oracle.com/java/ ウィキデータを編集
拡張子 java、class、jar
テンプレートを表示

Java[6]19962010Java

JavaC++JavaJavaJavaJava[7]write once, run anywhere[8]

2019GitHub[9]Java/Web使1[9]900[10]20239Java 2120219Java 17LTS[11]

Java[]


[12]

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.
JavaHR Java使

3Java200Java使250Java Card[12]

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[13]Java1Java

 (private, package, protected, public) privatepackageprotectedpublic1Javapackage便

JavaObjectObject

virtualinstanceof

プラットフォーム非依存[編集]


JavaWrite once, run anywhereJava

(一)JavaJavaJavaJavaJavaJavaJava

(二)JavaJavaJava

(三)JavaJavaJavaJava

JavaJava (dynamic recompilation) JavaJava

マルチスレッド[編集]


JavaAPI/API

JavaJavaObjectJavasynchronizedJavasynchronizedThissynchronizedsynchronized()

API

ガベージコレクション[編集]

Javaプログラムのメモリ管理は、Java仮想マシンガベージコレクションによって行われる。ガベージコレクションとは、すでにどこからも参照されていないインスタンスを自動的に特定して破棄し、その占有メモリ領域を自動的に解放する機能である。人の手によるオブジェクトの生成と破棄を正確に対応させるメモリ管理作業は煩雑化するのが常であり、メモリリークや不正リリースによるエラーを引き起こしやすく、バグの温床と化すのが通例であった。それらを自動化したガベージコレクションは、Javaプログラマを複雑なメモリ管理作業から解放する。

ガベージコレクタのプロセスは、システムスレッドに乗って未参照のインスタンスを探し続ける。どこかの末端だけが途切れている参照の連鎖のかたまりも正確に特定して、参照の孤島に例えられたメモリ領域を一気に解放する。Javaではガベージコレクション機能に並々ならぬ力が入れられており、その技術更新は現在も進行中である。世代別ガベージコレクタ、応答時間短縮化のレイテンシ重視ガーベジコレクタ、休止時間短縮化のスループット重視ガーベジコレクタなどが導入されて更に改訂を重ねており、運用環境別の選択使用も可能にされている。

分散コンピューティング[編集]


JavaCORBAJavaRMI

CORBAJavaRMIRMICORBARMI over IIOPCORBAIIOPRMIJRMPAPIJakarta EEEJB (Enterprise JavaBeans) 

EJBEJBEJBIIOPJRMP使JNDI

EJBWEBEJBWEB使WEBJSPJava Server PagesWEBHTTPWEBWEBWEBJSPWEBWEBEJBJBossWebSphereEJBWEBWEBApache Tomcat

セキュリティ[編集]


JavaJavadistributedJavaJavaJava







調



applet


Java[]

[]


199012

Java199012

OakGreen OS1991

C++C++C++C++Green OS

MesaCC++FurtherC++C++ ++ --1991OakJava

退1992 - 19945
JavaDukewith BSD

1992Green OSOak (PDA)199293Star7PDAOakStar7Duke

1992113DOOak

1994619949

199463NCSA MosaicOakWebRunnerOakWebRunner

Java19941019961
HotJava

1994OakJavaWebRunnerHotJavaGreen OSJava Runtime EnvironmentOakJavaBeanJava

199410JavaHotJava19955523SunJavaHotJavaJavaNetscape NavigatorJava1995199619JavaJava123JDK 1.0

バージョン履歴[編集]

バージョン リリース日
JDK Beta 1995年
JDK1.0 1996年1月23日[14]
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日[15]
Java SE 12 2019年3月19日
Java SE 13 2019年9月17日
Java SE 14 2020年3月17日
Java SE 15 2020年9月15日[16]
Java SE 16 2021年3月16日
Java SE 17 2021年9月14日[17]
Java SE 18 2022年3月22日[18]
Java SE 19 2022年9月20日[19]
Java SE 20 2023年3月21日[20]
Java SE 21 2023年9月19日[21]
Java SE 22 2024年3月19日[22]

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 Platform) JavaJavaJavaJavaJavaJavaJava (JCP) JavaJavaIT

[]


2019JavaJava4JavaJavaAPIJavaJDK 1.1J2SE 1.23J2SE 5.0Java Card4

Java Platform, Standard Edition (Java SE)

WEB

Java Platform, Enterprise Edition (Java EE) / Jakarta EE

WEB&API

20179Java EE[23][24]Java EEJakarta EE[25]

Java Platform, Micro Edition (Java ME)

&APIJava

Java Card

IC[?]SIMATMJava

Java (JRE)[]


Java (Java Runtime Environment; JRE) JavaJava''Java.exe''JavaJavaJava使JavaJavaJavaJava

Java

JavaJavaJavaJava API

(一) - Java

(二) - 

(三) - 

(四) - 

(五) - 

(六) - 

(七)GUI - 

(八) - 

(九)Java - 

(十) - SQL

(11) - 

(12) - 

Java

JavaJavaJava

Java (application)

JavaJava Web Startjnlpjava network launching protocolJavaClickOnce

Java (applet)

WEBJavaJava[?]

Java CardICJava

Java (servlet)

JavaWEBHTMLWEBPerlCGI

Java (server page)

WEBXHTML (HTML) JavaWEBWEBJavaScriptActive Server PagesPHP

Java (JDK)[]


Java (Java Development Kit) JavaJavaJavaJava APIAPIJava

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)JDKSDKSDK

Java API

APIJavaAPI沿 (package) javajavaxorgcom

(一)java.lang - Java

(二)java.io - 

(三)java.util - 

(四)java.math - 

(五)java.text - 

(六)java.net - 

(七)java.awt - 

(八)java.applet - 

(九)java.beans - 

(十)java.sql - SQL

(11)java.rmi - 

(12)java.security - 



 (IDE)JDKJDKIDE使JavaIDE

NetBeans - IDENetBeans.org NetBeans.jp

Eclipse SDK - IBMEclipseIDEJavaIDEWebSphere StudioJBuilderIDEeclipse.org EclipseWiki

WebSphere Studio -IBMIDEEclipse[26]WebSphere

IBM Rational - (IBM) RationalIDEWebSphere Studio

JBuilder - IDEJBuilder2007EclipseJBuilder

Oracle JDeveloper - Oracle Application Server2005628JDeveloper

Oracle Workshop for WebLogic - BEAWebLogicOracle Workshop

BlueJ - IDEBlueJ

IntelliJ IDEA - (JetBrains) IDEAndroid StudioIntelliJ IDEA

JCreator - (Xinox Software) IDEJCreator

Xcode - ApplemacOSIDE



Apache Ant - JavaApachejarjavadoc///make XMLJava 使

Apache Maven - JavaApache

Gradle - Apache AntApache Maven

JUnit - JavaxUnit

Java[]


JavaJava Community Process (JCP) Java (standardization) JavaJCPJava (Java Specification Request) Java

JNI (Java Native Interface)



JMI (Java Metadata Interface)

Java

JML (Java Modeling Language)

 (DbC) 

JMX (Java Management Extensions)

Java

JDMK (Java Dynamic Management Kit)

JMX

JDO (Java Data Objects)



Jini



JavaSpaces

Jini

JAIN (Java API for Integrated Networks)

API

JSF (Java Server Faces)

WEB

JXTA

P2P

OSGi



Java3D

3APIJava 3D

JOGL (Java OpenGL)

OpenGL使3DAPI

JAI (Java Advanced Imaging)

API

LWJGL

APIOpenGL, OpenAL, OpenCL

JSML (Java Speech Markup Language)



Blu-ray Disc Java

 (BD) 

Java[]


1996JavaJavaJavaJava2004IBMJavaJavaIBM2007Java SE 6OpenJDKGNU[27]OpenJDKGNUGNU Interpreter for JavaGNUGNU Compiler for JavaGNU ClasspathWindowsGNU CompilerMinGWCygwin

WindowsLinuxOSIBMBlackdownGNUKaffe.orgJavaJavaWinExcelsior JET[28]JarWinexewrapLaunch4jNSISJSmooth

Java[]


[ 1]JavaJava14
現在受験可能な資格[29][30][31][32]
資格名 レベル 対象バージョン
Java Foundations Certified Junior Associate Junior Associate 不明
Oracle Certified Java Programmer, Bronze SE 7/8[注釈 2] Bronze Java SE 7/8
Oracle Certified Java Programmer, Silver SE 8[注釈 3] Associate Java SE 8
Oracle Certified Java Programmer, Gold SE 8[注釈 4] Professional Java SE 8
Oracle Certified Professional, Java EE 7 Application Developer Professional Java EE 7
Oracle Certified Master, Java EE 6 Enterprise Architect Master Java EE 6
Oracle Certified Expert, Java EE 6 Enterprise JavaBeans Developer Expert Java EE 6
Oracle Certified Expert, Java EE 6 JavaServer Faces Developer Expert Java EE 6
Oracle Certified Expert, Java EE 6 Web Services Developer Expert Java EE 6
Oracle Certified Expert, Java EE 6 Java Persistence API Developer Expert Java EE 6
Oracle Certified Expert, Java EE 6 Web Component Developer Expert Java EE 6

注釈[編集]



(一)^ 

(二)^ [33]

(三)^  Oracle Certified Associate, Java SE 8 Programmer 

(四)^  Oracle Certified Professional, Java SE 8 Programmer 

出典[編集]



(一)^ Chaudhary, Harry H. (2014728). Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans. 2016529

(二)^ The Java Language Environment (19965). 201456201456

(三)^ The Java Language Specification, 2nd Edition. 201185200828

(四)^ The A-Z of Programming Languages: Modula-3.  Computerworld.com.au. 200915201069

(五)^ Patrick Naughton cites Objective-C as a strong influence on the design of the Java programming language, stating that notable direct derivatives include Java interfaces (derived from Objective-C's protocol) and primitive wrapper classes. [1] Java Was Strongly Influenced by Objective-C - 2011713

(六)^ What is Java and why do I need it? (). 20191

(七)^ 1.2 Design Goals of the Java Programming Language.   (199911). 20131232013114

(八)^ Write once, run anywhere?.  Computer Weekly (200252). 2009727

(九)^ abChan (2019122). The 10 most popular programming languages, according to the 'Facebook for programmers'. Business Insider. 20196292019629

(十)^ JavaOne 2013 Review: Java Takes on the Internet of Things. www.oracle.com. 20164192016619

(11)^ Why should I uninstall older versions of Java from my system?.  . 201699

(12)^ abJava Software | . www.oracle.com. 20191019

(13)^  

(14)^ JAVASOFT SHIPS JAVA 1.0. sun.com. 2007310200825

(15)^ Chander, Sharat. Introducing Java SE 11. oracle.com. 20189262018926

(16)^ The Arrival of Java 15!.  Oracle (2020915). 2020915

(17)^ Java 17.  Oracle (2021917). 2021930

(18)^ Java 18.  Oracle (2022322). 2022323

(19)^ Java 19.  Oracle (2022921). 2022921

(20)^ Java 20.  Oracle (2023322). 2022323

(21)^ Java 21.  Oracle (2023919). 2023921

(22)^ Java 22.  Oracle (2024321). 2024323

(23)^ Opening Up Java EE - An Update ().   (2017912). 2019310

(24)^ EE4JEclipseJava EE.  InfoQ (20171116). 2019310

(25)^ Java EE  Jakarta EE .  InfoQ (201835). 2019310

(26)^  BP Java (20031031). EclipseWebSphere Studio |  xTECH.  xTECH.  Nikkei Business Publications, Inc.. 20191117

(27)^ Sun Microsystems, Inc (200758). Sun Fulfills Promise of Open and Free Java Technology and Releases Java SE Platform to OpenJDK Community. 2009916

(28)^ http://www.excelsior-usa.com/jet.html

(29)^  Java SE  . 201937

(30)^  Java EE and Web Services  . 201937

(31)^ Java Foundations Certified Junior Associate (novice-level certification). 2019310

(32)^ . 201937

(33)^ JavaBronzeSilverGold. 201937

参考文献[編集]

関連項目[編集]

外部リンク[編集]

オラクル・JCP関連

技術情報