Java là gì?
Java là ngôn ngữ lập trình bậc cao, được phát triển bởi Sun Microsystems, do James Gosling khởi xướng và phát hành vào năm 1995 như là một thành phần cốt lõi của nền tảng Java của Sun Microsystems (Java 1.0 [J2SE]). Java chạy trên rất nhiều nền tảng khác nhau, như Windows, Mac và các phiên bản khác nhau của UNIX.
Java được hiểu là một loại ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp. Không giống với những ngôn ngữ lập trình thông thường, thay vì việc biên dịch mã nguồn trở thành mã nguồn máy hoặc trực tiếp thông dịch mã nguồn khi chạy thì Java được thiết kế để biên dịch mã nguồn thành bytecode. Sau đó, bytecode sẽ được môi trường thực thi (runtime environment).
Triết lý của Java
Triết lý của ngôn ngữ lập trình Java là xây dựng ứng dụng có thể:
Write Once, Run Anywhere
(viết 1 lần, chạy được trên nhiều thiết bị)
Đặc điểm của Java
Hướng đối tượng (Object Oriented) : Trong Java, mọi thứ đều là Object. Java có thể mở rộng vì nó dựa trên mô hình Object.
Nền tảng độc lập (Platform Independent) : Không giống như nhiều ngôn ngữ lập trình khác (C, C++), khi Java được biên dịch, nó không biên dịch sang một máy tính cụ thể trên nền tảng nào, thay vào đó là những byte code độc lập với nền tảng. Byte code này được phân phối trên web và được thông dịch bằng Virtual Machine (JVM) trên bất cứ nền tảng nào mà nó đang chạy.
Đơn giản (Simple) : Java được thiết kế để dễ học. Nếu bạn hiểu cơ bản về khái niệm lập trình hướng đối tượng Java, thì có thể nắm bắt ngôn ngữ này rất nhanh.
Bảo mật (Secure) : Với tính năng an toàn của Java, nó cho phép phát triển những hệ thống không có virus, giả mạo. Các kỹ thuật xác thực dựa trên mã hóa công khai.
Kiến trúc trung lập (Architecture-neutral) : Trình biên dịch của Java tạo ra một định dạng file object có kiến trúc trung lập, làm cho code sau khi biên dịch có thể chạy trên nhiều bộ vi xử lý, với sự hiện diện của Java runtime system.
Portable : Là kiến trúc trung lập và không phụ thuộc vào việc thực hiện là những đặc điểm chính nhất khi nói về khía cạnh Portable của Java. Trình biên dịch trong Java được viết bằng ANSI C với một ranh giới portable gọn gàng, đó là một subset POSIX (giao diện hệ điều hành linh động). Bạn có thể mang byte code của Java lên bất cứ nền tảng nào.
Mạnh mẽ (Robust) : Java nỗ lực loại trừ những tình huống dễ bị lỗi bằng cách nhấn mạnh chủ yếu là kiểm tra lỗi thời gian biên dịch và kiểm tra runtime.
Đa luồng (Multithreaded) : Với tính năng đa luồng của Java, bạn có thể viết các chương trình có thể thực hiện nhiều tác vụ đồng thời. Tính năng này cho phép các nhà phát triển xây dựng các ứng dụng tương tác có thể chạy trơn tru.
Thông dịch (Interpreted) : Byte code của Java được dịch trực tiếp tới các nền tảng gốc và nó không được lưu trữ ở bất cứ đâu.
Hiệu suất cao (High Performance) : Với việc sử dụng trình biên dịch Just-In-Time, Java cho phép thực thi với hiệu suất cao, nhanh chóng phát hiện, gỡ lỗi.
Phân tán (Distributed) : Java được thiết kế cho môi trường phân tán của Internet.
Linh động (Dynamic) : Java được coi là năng động hơn C hay C++ vì nó được thiết kế để thích nghi với môi trường đang phát triển. Các chương trình Java có thể mang theo một lượng lớn thông tin run-time, được sử dụng để xác minh và giải quyết các truy cập đến đối tượng trong thời gian chạy.
Lịch sử các phiên bản Java
Trên 30 năm phát triển, Java đã phát hành nhiều phiên bản. Sau đây là bảng tổng hợp danh sách các phiên bản của Java (tính đến hiện nay).
STT |
Version |
Ngày |
Diễn giải |
1 |
JDK Beta |
1995 |
Initial Draft version |
2 |
JDK 1.0 |
23 Jan 1996 |
A stable variant JDK 1.0.2 was termed as JDK 1 |
3 |
JDK 1.1 |
19 Feb 1997 |
Major features like JavaBeans, RMI, JDBC, inner classes were added in this release. |
4 |
JDK 1.2 |
8 Dec 1998 |
Swing, JIT Compiler, Java Modules, Collections were introduced to JAVA and this release was a great success. |
5 |
JDK 1.3 |
8 May 2000 |
HotSpot JVM, JNDI, JPDA, JavaSound and support for Synthetic proxy classes were added. |
6 |
JDK 1.4 |
6 Feb 2002 |
Image I/O API to create/read JPEG/PNG image were added. Integrated XML parser and XSLT processor (JAXP) and Preferences API were other important updates. |
7 |
JDK 1.5 or J2SE 5 |
30 Sep 2004 |
Various new features were added to the language like foreach, var-args, generics etc. |
8 |
JAVA SE 6 |
11 Dec 2006 |
1. notation was dropped to SE and upgrades done to JAXB 2.0, JSR 269 support and JDBC 4.0 support added. |
9 |
JAVA SE 7 |
7 Jul 2011 |
Support for dynamic languages added to JVM. Another enhancements included string in switch case, compressed 64 bit pointers etc. |
10 |
JAVA SE 8 |
18 Mar 2014 |
Support for functional programming added. Lambda expressions,streams, default methods, new date-time APIs introduced. |
11 |
JAVA SE 9 |
21 Sep 2017 |
Module system introduced which can be applied to JVM platform. |
12 |
JAVA SE 10 |
20 Mar 2018 |
Unicode language-tag extensions added. Root certificates, threadlocal handshakes, support for heap allocation on alternate memory devices etc were introduced. |
13 |
JAVA SE 11 |
5 Sep 2018 |
Dynamic class-file constants,Epsilon a no-op garbage collector, local-variable support in lambda parameters, Low-overhead heap profiling support added. |
14 |
JAVA SE 12 |
19 Mar 2019 |
Experimental Garbage Collector,Shenandoah: A Low-Pause-Time Garbage Collector, Microbenchmark Suite, JVM Constants API added. |
15 |
JAVA SE 13 |
17 Sep 2019 |
Feature added - Text Blocks (Multiline strings), Enhanced Thread-local handshakes. |
16 |
JAVA SE 14 |
17 Mar 2020 |
Feature added - Records, a new class type for modelling, Pattern Matching for instanceof, Intuitive NullPointerException handling. |
17 |
JAVA SE 15 |
15 Sep 2020 |
Feature added - Sealed Classes, Hidden Classes, Foreign Function and Memory API (Incubator). |
18 |
JAVA SE 16 |
16 Mar 2021 |
Feature added as preview - Records, Pattern Matching for switch, Unix Domain Socket Channel (Incubator) etc. |
19 |
JAVA SE 17 |
14 Sep 2021 |
Feature added as finalized - Sealed Classes, Pattern Matching for instanceof, Strong encapsulation of JDK internals by default. New macOS rendering pipeline etc. |
20 |
JAVA SE 18 |
22 Mar 2022 |
Feature added - UTF-8 by Default, Code Snippets in Java API Documentation, Vector API (Third incubator), Foreign Function, Memory API (Second Incubator) etc. |
21 |
JAVA SE 19 |
20 Sep 2022 |
Feature added - Record pattern, Vector API (Fourth incubator), Structured Concurrency (Incubator) etc. |
22 |
JAVA SE 20 |
21 Mar 2023 |
Feature added - Scoped Values (Incubator), Record Patterns (Second Preview), Pattern Matching for switch (Fourth Preview),Foreign Function & Memory API (Second Preview) etc. |
22 |
JAVA SE 21 |
19 Sep 2023 |
Feature added - String Templates (Preview), Sequenced Collections, Generational ZGC, Record Patterns, Pattern Matching for switch etc. |
|