Java (ngôn ngữ lập trình)

một ngôn ngữ lập trình hướng đối tượng

Java (phiên âm Tiếng Việt: "Gia-va") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ lập trình có mục đích chung cho phép các nhà phát triển ứng dụng viết một lần, chạy ở mọi nơi (WORA),[9] nghĩa là mã Java đã biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ Java mà không cần biên dịch lại.[10] Các ứng dụng Java thường được biên dịch thành bytecode có thể chạy trên bất kỳ máy ảo Java (JVM) nào bất kể kiến trúc máy tính bên dưới. Cú pháp của Java tương tự như CC++, nhưng có ít cơ sở cấp thấp hơn các ngôn ngữ trên. Java runtime cung cấp các khả năng động (chẳng hạn như phản ánh và sửa đổi mã thời gian chạy) thường không có sẵn trong các ngôn ngữ biên dịch truyền thống. Tính đến năm 2019 Java là một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng theo GitHub,[11][12] đặc biệt cho các ứng dụng web máy khách-máy chủ, với 9 triệu nhà phát triển đã được báo cáo.[13]

Java
Mẫu hìnhMẫu hình lập trình
Thiết kế bởiJames Gosling
Sun Microsystems
Nhà phát triểnOracle Corporation
Xuất hiện lần đầu1995 (1995)
Phiên bản ổn định
Java Standard Edition 10 (18.3) / 20 tháng 3 năm 2018; 3 năm trước (2018-03-20)
Kiểm tra kiểuTĩnh, mạnh, an toàn, kiểu danh định, hiển nhiên
Ngôn ngữ thực thiCC++
Hệ điều hànhCross-platform (multi-platform)
Giấy phépGNU General Public License, Java Community Process
Phần mở rộng tên tập tin.java,.class,.jar
Trang mạngFor Java Developers
Các trình thực thi lớn
OpenJDK và nhiều máy ảo Java
Phương ngữ
Generic Java, Pizza
Ảnh hưởng bởi
Ada 83, C++, C#,[1] Eiffel,[2] Generic Java, Mesa,[3] Modula-3,[4] Oberon,[5] Objective-C,[6] UCSD Pascal,[7][8] Smalltalk
Ảnh hưởng tới
Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Groovy, J#, JavaScript, PHP, Python, Scala, Seed7, Vala

Java ban đầu được James Gosling tại Sun Microsystems (sau đó đã được Oracle mua lại) phát triển và được phát hành vào năm 1995 như một thành phần cốt lõi của nền tảng Java của Sun Microsystems. Các trình biên dịch Java, máy ảo và thư viện lớp thực thi gốc và tham chiếu ban đầu được Sun phát hành theo giấy phép độc quyền. Kể từ tháng 5 năm 2007, tuân theo các thông số kỹ thuật của Quy trình Cộng đồng Java, Sun đã cấp phép hầu hết các công nghệ Java của mình theo Giấy phép Công cộng GNU. Oracle cung cấp Máy ảo Java HotSpot của riêng mình, tuy nhiên việc triển khai tham chiếu chính thức là OpenJDK JVM, là phần mềm mã nguồn mở miễn phí và được hầu hết các nhà phát triển sử dụng và là JVM mặc định cho hầu hết các bản phân phối Linux.

Tính đến tháng 9 năm 2020, phiên bản mới nhất là Java 15, với Java 11, một phiên bản hỗ trợ dài hạn (LTS), được phát hành vào 25 tháng 9 năm 2018. Oracle phát hành bản cập nhật miễn phí cho công chúng với phiên bản kế thừa Java 8 LTS vào tháng 1 năm 2019 cho mục đích sử dụng thương mại, mặc dù nếu không nó sẽ vẫn hỗ trợ Java 8 với các bản cập nhật công khai cho mục đích sử dụng cá nhân vô thời hạn. Các nhà cung cấp khác đã bắt đầu cung cấp các bản miễn phí của OpenJDK 8 và 11 mà vẫn đang nhận được bảo mật và các nâng cấp khác.

Oracle (và những công ty khác) khuyên người dùng nên gỡ cài đặt các phiên bản Java đã lỗi thời vì những rủi ro nghiêm trọng do các vấn đề bảo mật chưa được giải quyết.[14] Vì Java 9, 10, 12, 13 và 14 không còn được hỗ trợ, Oracle khuyên người dùng nên chuyển ngay sang phiên bản mới nhất (hiện tại là Java 15) hoặc bản phát hành LTS.

Lịch sửSửa đổi

 
Duke

James Gosling, Mike Sheridan và Patrick Naughton khởi xướng dự án ngôn ngữ Java vào tháng 6 năm 1991.[15] Java ban đầu được thiết kế cho truyền hình tương tác, nhưng nó quá tiên tiến đối với ngành truyền hình cáp kỹ thuật số vào thời điểm đó.[16] Ban đầu ngôn ngữ này được gọi là Oak theo tên một cây sồi bên ngoài văn phòng của Gosling. Sau đó, dự án có tên là Green và cuối cùng được đổi tên thành Java, từ cà phê Java, loại cà phê đến từ Indonesia.[17] Gosling đã thiết kế Java với cú pháp kiểu C/C++ mà các lập trình viên hệ thống và ứng dụng đã quen thuộc.[18]

Sun Microsystems đã phát hành bản triển khai công khai đầu tiên dưới dạng Java 1.0 vào năm 1996.[19] Nó hứa hẹn khả năng Viết một lần, Chạy mọi nơi ( WORA ), cung cấp thời gian chạy miễn phí trên các nền tảng phổ biến. Khá an toàn và có tính năng bảo mật có thể định cấu hình, nó cho phép các hạn chế truy cập mạng và tệp. Các trình duyệt web lớn đã sớm kết hợp khả năng chạy các ứng dụng Java trong các trang web và Java nhanh chóng trở nên phổ biến. Trình biên dịch Java 1.0 được viết lại bằng Java bởi Arthur van Hoff để tuân thủ nghiêm ngặt đặc tả ngôn ngữ Java 1.0.[20] Với sự ra đời của Java 2 (ban đầu được phát hành với tên gọi J2SE 1.2 vào tháng 12 năm 1998 – 1999), các phiên bản mới có nhiều cấu hình được xây dựng cho các loại nền tảng khác nhau. J2EE bao gồm các công nghệ và API cho các ứng dụng doanh nghiệp thường chạy trong môi trường máy chủ, trong khi các API đặc trưng của J2ME được tối ưu hóa cho các ứng dụng di động. Phiên bản dành cho máy tính để bàn được đổi tên thành J2SE. Năm 2006, vì mục đích tiếp thị, Sun đã đổi tên các phiên bản J2 mới lần lượt là Java EE, Java MEJava SE.

Năm 1997, Sun Microsystems đã tiếp cận cơ quan tiêu chuẩn ISO/IEC JTC 1 và sau đó là Ecma International để chính thức hóa Java, nhưng sau đó công ty nhanh chóng rút khỏi quy trình này.[21][22][23] Java vẫn là một tiêu chuẩn thực tế, được kiểm soát thông qua Quy trình cộng đồng Java.[24] Đã có lúc, Sun cung cấp hầu hết các triển khai Java của mình mà không tính phí, bất chấp trạng thái phần mềm độc quyền của họ. Sun đã tạo ra doanh thu từ Java thông qua việc bán giấy phép cho các sản phẩm chuyên biệt như Hệ thống Doanh nghiệp Java.

Vào ngày 13 tháng 11 năm 2006, Sun đã phát hành phần lớn máy ảo Java (JVM) của mình dưới dạng phần mềm mã nguồn mở và miễn phí (FOSS), theo các điều khoản của Giấy phép Công cộng GNU (GPL). Vào ngày 8 tháng 5 năm 2007, Sun đã hoàn thành quá trình, cung cấp tất cả mã cốt lõi của JVM theo các điều khoản phân phối phần mềm miễn phí / nguồn mở, ngoại trừ một phần nhỏ mã mà Sun không giữ bản quyền.[25][26]

Phó chủ tịch Rich Green của Sun nói rằng vai trò lý tưởng của Sun đối với Java là như một nhà truyền giáo .[27] Sau khi Tập đoàn Oracle mua lại Sun Microsystems vào năm 2009–10, Oracle đã tự mô tả mình là người quản lý công nghệ Java với cam kết không ngừng thúc đẩy cộng đồng tham gia và minh bạch.[28] Điều này không ngăn được Oracle đệ đơn kiện Google ngay sau đó vì đã sử dụng Java bên trong Android SDK.

Ngày 2 tháng 4 năm 2010, James Gosling từ chức tại Oracle.[29]

Vào tháng 1 năm 2016, Oracle đã thông báo rằng môi trường thời gian chạy Java dựa trên JDK 9 sẽ ngừng cung cấp plugin trình duyệt.[30]

Phần mềm Java chạy trên mọi thứ, từ máy tính xách tay đến trung tâm dữ liệu, bảng điều khiển trò chơi đến siêu máy tính khoa học.[31]

Nguyên tắcSửa đổi

Có 5 mục tiêu chính trong việc xây dựng ngôn ngữ Java:[32]

  1. Nó phải đơn giản, hướng đối tượng và quen thuộc.
  2. Nó phải mạnh mẽ và an toàn.
  3. Nó phải là kiến trúc trung lập và di động.
  4. Nó phải thực thi với hiệu suất cao.
  5. Nó phải được thông dịch, phân luồngđộng.

Phiên bảnSửa đổi

Các phiên bản Java đã phát hành:

VersionDate
JDK Beta1995
JDK1.0ngày 23 tháng 1 năm 1996 [33]
JDK 1.1ngày 19 tháng 2 năm 1997
J2SE 1.2ngày 8 tháng 12 năm 1998
J2SE 1.3ngày 8 tháng 5 năm 2000
J2SE 1.4ngày 6 tháng 2 năm 2002
J2SE 5.0ngày 30 tháng 9 năm 2004
Java SE 6ngày 11 tháng 12 năm 2006
Java SE 7ngày 28 tháng 7 năm 2011
Java SE 8ngày 18 tháng 3 năm 2014
Java SE 9ngày 21 tháng 9 năm 2017
Java SE 10ngày 20 tháng 3 năm 2018
Java SE 11ngày 25 tháng 9 năm 2018 [34]
Java SE 12ngày 19 tháng 3 năm 2019
Java SE 13ngày 17 tháng 9 năm 2019
Java SE 14ngày 17 tháng 3 năm 2020
Java SE 15ngày 15 tháng 9 năm 2020

EditionSửa đổi

Sun đã xác định và hỗ trợ bốn phiên bản Java nhắm mục tiêu các môi trường ứng dụng khác nhau và phân đoạn nhiều API của nó để chúng thuộc về một trong các nền tảng. Các nền tảng là:

Các lớp trong Java API được tổ chức thành các nhóm riêng biệt gọi là gói. Mỗi gói chứa một tập hợp các giao diện, lớp, gói con và ngoại lệ liên quan.

Sun cũng cung cấp một phiên bản có tên là Personal Java đã được thay thế bằng các cặp cấu hình Java ME dựa trên tiêu chuẩn sau này.

Hệ thống thực thiSửa đổi

Java JVM và bytecodeSửa đổi

Một mục tiêu thiết kế của Java là tính di động, có nghĩa là các chương trình được viết cho nền tảng Java phải chạy tương tự nhau trên bất kỳ sự kết hợp nào giữa phần cứng và hệ điều hành với hỗ trợ thời gian chạy thích hợp. Điều này đạt được bằng cách biên dịch mã ngôn ngữ Java sang một đại diện trung gian được gọi là Java bytecode, thay vì trực tiếp tới mã máy cụ thể về kiến trúc. Các lệnh mã bytecode trong Java tương tự như mã máy, nhưng chúng được thiết kế để thực thi bởi một máy ảo (VM) được viết riêng cho phần cứng máy chủ. Người dùng cuối thường sử dụng Java Runtime Environment (JRE) được cài đặt trên máy của họ cho các ứng dụng Java độc lập hoặc trong trình duyệt web cho các ứng dụng Java.

Các thư viện tiêu chuẩn cung cấp một cách chung để truy cập các tính năng dành riêng cho máy chủ như đồ họa, phân luồngmạng.

Việc sử dụng bytecode phổ biến làm cho việc chuyển cổng trở nên đơn giản. Tuy nhiên, chi phí của việc thông dịch bytecode thành các lệnh máy làm cho các chương trình được thông dịch hầu như luôn chạy chậm hơn các chương trình thực thi gốc. Các trình biên dịch Just-in-time (JIT) biên dịch mã byte thành mã máy trong thời gian chạy đã được giới thiệu từ giai đoạn đầu. Bản thân Java độc lập với nền tảng và được điều chỉnh cho phù hợp với nền tảng cụ thể mà máy ảo Java (JVM) chạy trên nó, máy này sẽ dịch mã bytecode của Java sang ngôn ngữ máy của nền tảng.[39]

Hiệu suấtSửa đổi

Các chương trình được viết bằng Java nổi tiếng là chậm hơn và đòi hỏi nhiều bộ nhớ hơn các chương trình được viết bằng C++ .[40][41] Tuy nhiên, tốc độ thực thi của các chương trình Java được cải thiện đáng kể với sự ra đời của tính năng biên dịch đúng lúc vào năm 1997/1998 cho Java 1.1,[42] việc bổ sung các tính năng ngôn ngữ hỗ trợ phân tích mã tốt hơn (chẳng hạn như các lớp bên trong, lớp StringBuilder, các xác nhận tùy chọn, v.v.) và tối ưu hóa trong máy ảo Java, chẳng hạn như HotSpot trở thành mặc định cho JVM của Sun vào năm 2000. Với Java 1.5, hiệu suất đã được cải thiện với việc bổ sung gói java.util.concurrent, bao gồm khóa các triển khai miễn phí của ConcurrentMaps và các bộ sưu tập đa lõi khác và nó đã được cải thiện hơn nữa với Java 1.6.

Không JVMSửa đổi

Một số nền tảng cung cấp hỗ trợ phần cứng trực tiếp cho Java; có những bộ điều khiển vi mô có thể chạy Java bytecode trong phần cứng thay vì máy ảo Java phần mềm,[43] và một số bộ xử lý dựa trên ARM có thể có hỗ trợ phần cứng để thực thi Java bytecode thông qua tùy chọn Jazelle của chúng, mặc dù hỗ trợ hầu hết đã bị loại bỏ trong các triển khai hiện tại của ARM.

Quản lý bộ nhớ tự độngSửa đổi

Java sử dụng bộ thu gom rác tự động (AGC) để quản lý bộ nhớ trong vòng đời đối tượng. Lập trình viên xác định thời điểm các đối tượng được tạo và thời gian chạy Java chịu trách nhiệm khôi phục bộ nhớ khi các đối tượng không còn được sử dụng. Khi không còn tham chiếu đến một đối tượng, bộ nhớ không thể truy cập sẽ đủ điều kiện để được giải phóng tự động bởi bộ thu gom rác. Một cái gì đó tương tự như rò rỉ bộ nhớ vẫn có thể xảy ra nếu mã của lập trình viên giữ một tham chiếu đến một đối tượng không còn cần thiết, thường là khi các đối tượng không còn cần thiết được lưu trữ trong các bộ chứa vẫn đang được sử dụng. Nếu các phương thức cho một đối tượng không tồn tại được gọi, một ngoại lệ con trỏ null sẽ được đưa ra.[44][45]

Một trong những ý tưởng đằng sau mô hình quản lý bộ nhớ tự động của Java là các lập trình viên có thể không phải chịu gánh nặng khi phải thực hiện quản lý bộ nhớ thủ công. Trong một số ngôn ngữ, bộ nhớ để tạo các đối tượng được cấp phát ngầm trên ngăn xếp hoặc được cấp phát và phân bổ rõ ràng từ heap. Trong trường hợp thứ hai, trách nhiệm quản lý bộ nhớ thuộc về lập trình viên. Nếu chương trình không phân bổ một đối tượng, một rò rỉ bộ nhớ sẽ xảy ra. Nếu chương trình cố gắng truy cập hoặc phân bổ bộ nhớ đã được phân bổ, kết quả là không xác định và khó dự đoán, và chương trình có thể trở nên không ổn định hoặc gặp sự cố. Điều này có thể được khắc phục một phần bằng cách sử dụng các con trỏ thông minh, nhưng chúng làm tăng thêm chi phí và sự phức tạp. Lưu ý rằng việc thu gom rác không ngăn chặn rò rỉ bộ nhớ logic, tức là những nơi bộ nhớ vẫn được tham chiếu nhưng không bao giờ được sử dụng.

Việc thu gom rác có thể xảy ra bất cứ lúc nào. Lý tưởng nhất, nó sẽ xảy ra khi một chương trình không hoạt động. Nó được đảm bảo sẽ được kích hoạt nếu không có đủ bộ nhớ trống trên heap để cấp phát một đối tượng mới; điều này có thể khiến một chương trình bị dừng trong giây lát. Không thể quản lý bộ nhớ rõ ràng trong Java.

Java không hỗ trợ số học con trỏ kiểu C/C++, trong đó địa chỉ đối tượng có thể được thao tác số học (ví dụ: bằng cách thêm hoặc trừ một phần bù). Điều này cho phép bộ thu gom rác di chuyển các đối tượng được tham chiếu và đảm bảo an toàn và bảo mật kiểu.

Giống như trong C++ và một số ngôn ngữ hướng đối tượng khác, các biến của kiểu dữ liệu nguyên thủy của Java hoặc được lưu trữ trực tiếp trong các trường (đối với các đối tượng) hoặc trên ngăn xếp (đối với các phương thức) chứ không phải trên heap, điều này thường đúng đối với dữ liệu không nguyên thủy các loại (nhưng hãy xem phân tích thoát). Đây là một quyết định có ý thức của các nhà thiết kế của Java vì lý do hiệu suất.

Java chứa nhiều loại trình thu gom rác. Theo mặc định, HotSpot sử dụng bộ thu gom rác quét song song.[46] Tuy nhiên, cũng có một số trình thu gom rác khác có thể được sử dụng để quản lý đống rác. Đối với 90% ứng dụng trong Java, bộ thu gom rác đồng thời Mark-Sweep (CMS) là đủ.[47] Oracle đặt mục tiêu thay thế CMS bằng Garbage-First Collector (G1).[48]

Giải quyết được vấn đề quản lý bộ nhớ không giúp lập trình viên bớt gánh nặng xử lý đúng cách các loại tài nguyên khác, như kết nối mạng hoặc cơ sở dữ liệu, xử lý tệp, v.v., đặc biệt là khi có lỗi.

Các lớp đặc biệtSửa đổi

AppletSửa đổi

Java applet là các chương trình được nhúng vào trong các ứng dụng khác, thường là trong một trang web hiển thị trong trình duyệt web. API của Java applet hiện không còn được dùng nữa kể từ ngày 9 tháng 1 năm 2017.

ServletSửa đổi

Công nghệ Java servlet cung cấp cho các nhà phát triển Web một cơ chế nhất quán, đơn giản để mở rộng chức năng của máy chủ Web và để truy cập các hệ thống kinh doanh hiện có. Servlet là các thành phần Java EE phía máy chủ tạo ra các phản hồi (thường là các trang HTML) cho các yêu cầu (thường là các yêu cầu HTTP) từ máy khách.

Ở một mức độ nào đó, API của Java servlet đã được thay thế bởi hai công nghệ Java cho dịch vụ web:

Sự phổ biếnSửa đổi

 
Biểu đồ sự phổ biến của 10 ngôn ngữ lập trình phổ biến nhất thế giới từ 30/6/2001 đến 9/12/2017. Trong suốt thời gian 16 năm này, Java và C luôn giữ hai vị trí đầu.

Tính đến ngày 21 tháng 01 năm 2021, Java là ngôn ngữ lập trình phổ biến thứ nhì thế giới với tỉ lệ 11,96% chỉ xếp sau ngôn ngữ C. Qua nhiều năm Java và C vẫn luôn chiếm hai vị trí đầu tiên trong bảng các ngôn ngữ lập trình phổ biến nhất suốt 20 năm qua, tuy những năm gần đây độ phổ biến có xu hướng giảm nhưng Java vẫn giữ được tỉ lệ trên 10% mặc cho sự phát triển chóng mặt của thế giới công nghệ, Java thể hiện đẳng cấp một ngôn ngữ lập trình chất lượng của nhân loại.[49]

Tham khảoSửa đổi

  1. ^ Java 5.0 added several new language features (the enhanced for loop, autoboxing, varargsannotations), after they were introduced in the similar (and competing) C# language [1] [2]
  2. ^ Gosling, James; and McGilton, Henry (tháng 5 năm 1996). “The Java Language Environment”.Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
  3. ^ Gosling, James; Joy, Bill; Steele, Guy; and Bracha, Gilad. “The Java Language Specification, 2nd Edition”.Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
  4. ^ “The A-Z of Programming Languages: Modula-3”. Computerworld.com.au. Truy cập ngày 9 tháng 6 năm 2010.
  5. ^ Niklaus Wirth stated on a number of public occasions, e.g. in a lecture at the Polytechnic Museum, Moscow in September, 2005 (several independent first-hand accounts in Russian exist, e.g. one with an audio recording: Filippova, Elena (ngày 22 tháng 9 năm 2005). “Niklaus Wirth's lecture at the Polytechnic Museum in Moscow”.), that the Sun Java design team licenced the Oberon compiler sources a number of years prior to the release of Java and examined it: a (relative) compactness, type safety, garbage collection, no multiple inheritance for classes -- all these key overall design features are shared by Java and Oberon.
  6. ^ 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. [3]
  7. ^ TechMetrix Research (1999). “History of Java” (PDF). Java Application Servers Report. Bản gốc (PDF) lưu trữ ngày 29 tháng 12 năm 2010. Truy cập ngày 5 tháng 1 năm 2013. The project went ahead under the name "green" and the language was based on an old model of UCSD Pascal, which makes it possible to generate interpretive code
  8. ^ “A Conversation with James Gosling – ACM Queue”. Queue.acm.org. ngày 31 tháng 8 năm 2004. Truy cập ngày 9 tháng 6 năm 2010.
  9. ^ “Write once, run anywhere?”. Computer Weekly. ngày 2 tháng 5 năm 2002. Truy cập ngày 27 tháng 7 năm 2009.
  10. ^ “1.2 Design Goals of the Java™ Programming Language”. Oracle. ngày 1 tháng 1 năm 1999. Bản gốc lưu trữ ngày 23 tháng 1 năm 2013. Truy cập ngày 14 tháng 1 năm 2013.
  11. ^ McMillan, Robert (ngày 1 tháng 8 năm 2013). “Is Java Losing Its Mojo?”. Bản gốc lưu trữ ngày 15 tháng 2 năm 2017. Truy cập ngày 8 tháng 3 năm 2017. Java is on the wane, at least according to one outfit that keeps on eye on the ever-changing world of computer programming languages. For more than a decade, it has dominated the TIOBE Programming Community Index, and is back on top – a snapshot of software developer enthusiasm that looks at things like internet search results to measure how much buzz different languages have. But lately, Java has been slipping.
  12. ^ Chan, Rosalie (ngày 22 tháng 1 năm 2019). “The 10 most popular programming languages, according to the 'Facebook for programmers'. Business Insider. Bản gốc lưu trữ ngày 29 tháng 6 năm 2019. Truy cập ngày 29 tháng 6 năm 2019.
  13. ^ “JavaOne 2013 Review: Java Takes on the Internet of Things”. www.oracle.com. Bản gốc lưu trữ ngày 19 tháng 4 năm 2016. Truy cập ngày 19 tháng 6 năm 2016. Alt URL
  14. ^ “Why should I uninstall older versions of Java from my system?”. Oracle. Truy cập ngày 9 tháng 9 năm 2016.
  15. ^ Byous, Jon (tháng 3 năm 1998). “Java technology: The early years”. Sun Developer Network. Sun Microsystems. Bản gốc lưu trữ ngày 20 tháng 4 năm 2005. Truy cập ngày 22 tháng 4 năm 2005.
  16. ^ Object-oriented programming “The History of Java Technology”. Sun Developer Network. tháng 3 năm 1995. Bản gốc lưu trữ ngày 10 tháng 2 năm 2010. Truy cập ngày 30 tháng 4 năm 2010.
  17. ^ Murphy, Kieron (4 tháng 10 năm 1996). “So why did they decide to call it Java?”. JavaWorld. Truy cập ngày 13 tháng 7 năm 2020.
  18. ^ Kabutz, Heinz; Once Upon an Oak Error in Webarchive template: Empty url.. Artima. Truy cập ngày 29 tháng 4 năm 2007.
  19. ^ “JAVASOFT SHIPS JAVA 1.0”. Bản gốc lưu trữ ngày 10 tháng 3 năm 2007. Truy cập ngày 13 tháng 5 năm 2018.
  20. ^ Object-oriented Programming with Java: Essentials and Applications. Tata McGraw-Hill Education. tr. 34.
  21. ^ “JSG – Java Study Group”. open-std.org. Bản gốc lưu trữ ngày 25 tháng 8 năm 2006. Truy cập ngày 2 tháng 8 năm 2006.
  22. ^ “Why Java™ Was – Not – Standardized Twice” (PDF). Bản gốc (PDF) lưu trữ ngày 13 tháng 1 năm 2014. Truy cập ngày 3 tháng 6 năm 2018.
  23. ^ “What is ECMA—and why Microsoft cares”. Bản gốc lưu trữ ngày 6 tháng 5 năm 2014. Truy cập ngày 6 tháng 5 năm 2014.
  24. ^ “Java Community Process website”. Jcp.org. ngày 24 tháng 5 năm 2010. Bản gốc lưu trữ ngày 8 tháng 8 năm 2006. Truy cập ngày 9 tháng 6 năm 2010.
  25. ^ “JAVAONE: Sun – The bulk of Java is open sourced”. GrnLight.net. Bản gốc lưu trữ ngày 27 tháng 5 năm 2014. Truy cập ngày 26 tháng 5 năm 2014.
  26. ^ “Oracle and Java”. oracle.com. Oracle Corporation. Truy cập ngày 23 tháng 8 năm 2010. Oracle has been a leading and substantive supporter of Java since its emergence in 1995 and takes on the new role as steward of Java technology with a relentless commitment to fostering a community of participation and transparency.
  27. ^ “Sun's Evolving Role as Java Evangelist”. O'Reilly Media. Bản gốc lưu trữ ngày 15 tháng 9 năm 2010. Truy cập ngày 2 tháng 8 năm 2009.
  28. ^ “Oracle and Java”. oracle.com. Oracle Corporation. Bản gốc lưu trữ ngày 31 tháng 1 năm 2010. Truy cập ngày 23 tháng 8 năm 2010. Oracle has been a leading and substantive supporter of Java since its emergence in 1995 and takes on the new role as steward of Java technology with a relentless commitment to fostering a community of participation and transparency.
  29. ^ Gosling, James (ngày 9 tháng 4 năm 2010). “Time to move on...”. On a New Road. Bản gốc lưu trữ ngày 5 tháng 11 năm 2010. Truy cập ngày 16 tháng 11 năm 2011.
  30. ^ Topic, Dalibor. “Moving to a Plugin-Free Web”. Bản gốc lưu trữ ngày 16 tháng 3 năm 2016. Truy cập ngày 15 tháng 3 năm 2016.
  31. ^ “Learn About Java Technology”. Oracle. Bản gốc lưu trữ ngày 24 tháng 11 năm 2011. Truy cập ngày 21 tháng 11 năm 2011.
  32. ^ “1.2 Design Goals of the JavaTM Programming Language”. Java.sun.com. ngày 1 tháng 1 năm 1999. Truy cập ngày 9 tháng 6 năm 2010.
  33. ^ “JAVASOFT SHIPS JAVA 1.0”. Bản gốc lưu trữ ngày 10 tháng 3 năm 2007. Truy cập ngày 5 tháng 2 năm 2008.
  34. ^ Chander, Sharat. “Introducing Java SE 11”. oracle.com. Lưu trữ bản gốc ngày 26 tháng 9 năm 2018. Truy cập ngày 26 tháng 9 năm 2018.
  35. ^ “Java Card Overview”. Oracle Technology Network. Oracle. Bản gốc lưu trữ ngày 7 tháng 1 năm 2015. Truy cập ngày 18 tháng 12 năm 2014.
  36. ^ “Java Platform, Micro Edition (Java ME)”. Oracle Technology Network. Oracle. Bản gốc lưu trữ ngày 4 tháng 1 năm 2015. Truy cập ngày 18 tháng 12 năm 2014.
  37. ^ “Java SE”. Oracle Technology Network. Oracle. Bản gốc lưu trữ ngày 24 tháng 12 năm 2014. Truy cập ngày 18 tháng 12 năm 2014.
  38. ^ “Java Platform, Enterprise Edition (Java EE)”. Oracle Technology Network. Oracle. Bản gốc lưu trữ ngày 17 tháng 12 năm 2014. Truy cập ngày 18 tháng 12 năm 2014.
  39. ^ “Is the JVM (Java Virtual Machine) platform dependent or platform independent? What is the advantage of using the JVM, and having Java be a translated language?”. Programmer Interview. Bản gốc lưu trữ ngày 19 tháng 1 năm 2015. Truy cập ngày 19 tháng 1 năm 2015.
  40. ^ Jelovic, Dejan. “Why Java will always be slower than C++”. Bản gốc lưu trữ ngày 11 tháng 2 năm 2008. Truy cập ngày 15 tháng 2 năm 2008.
  41. ^ Google. “Loop Recognition in C++/Java/Go/Scala” (PDF). Truy cập ngày 12 tháng 7 năm 2012.
  42. ^ “Symantec's Just-In-Time Java Compiler To Be Integrated into Sun JDK 1.1”. Bản gốc lưu trữ ngày 28 tháng 6 năm 2010. Truy cập ngày 1 tháng 8 năm 2009.
  43. ^ Salcic, Zoran; Park, Heejong; Teich, Jürgen; Malik, Avinash; Nadeem, Muhammad (ngày 22 tháng 7 năm 2017). “Noc-HMP: A Heterogeneous Multicore Processor for Embedded Systems Designed in SystemJ”. ACM Transactions on Design Automation of Electronic Systems. 22 (4): 73. doi:10.1145/3073416. ISSN 1084-4309.
  44. ^ “NullPointerException”. Oracle. Bản gốc lưu trữ ngày 6 tháng 5 năm 2014. Truy cập ngày 6 tháng 5 năm 2014.
  45. ^ “Exceptions in Java”. Artima.com. Bản gốc lưu trữ ngày 21 tháng 1 năm 2009. Truy cập ngày 10 tháng 8 năm 2010.
  46. ^ “Java HotSpot™ Virtual Machine Performance Enhancements”. Oracle.com. Bản gốc lưu trữ ngày 29 tháng 5 năm 2017. Truy cập ngày 26 tháng 4 năm 2017.
  47. ^ “Java HotSpot VM Options”. Oracle.com. 7 tháng 9 năm 2010. Bản gốc lưu trữ ngày 6 tháng 3 năm 2011. Truy cập ngày 30 tháng 6 năm 2012.
  48. ^ “Garbage-First Collector”. docs.oracle.com. Bản gốc lưu trữ ngày 9 tháng 3 năm 2016. Truy cập ngày 15 tháng 3 năm 2016.
  49. ^ “Tiobe Index”. TIOBE. Truy cập ngày 21 tháng 1 năm 2020.

Liên kết ngoàiSửa đổi