Java (ngôn ngữ lập trình)
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 (OOP) và dựa trên các lớp (class)[9]. Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy.
Mẫu hình | Mẫu hình lập trình |
---|---|
Thiết kế bởi | James Gosling Sun Microsystems |
Nhà phát triển | Oracle Corporation |
Xuất hiện lần đầu | 1995 |
Phiên bản ổn định | Java Standard Edition 10 (18.3)
/ 20 tháng 3 năm 2018 |
Kiểm tra kiểu | Tĩnh, mạnh, an toàn, kiểu danh định, hiển nhiên |
Ngôn ngữ thực thi | C và C++ |
Hệ điều hành | Cross-platform (multi-platform) |
Giấy phép | GNU General Public License, Java Community Process |
Phần mở rộng tên tập tin | .java,.class,.jar |
Trang mạng | For 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 | |
|
Trước đây, Java chạy chậm hơn những ngôn ngữ dịch thẳng ra mã máy như C và C++, nhưng sau này nhờ công nghệ "biên dịch tại chỗ" - Just in time compilation, khoảng cách này đã được thu hẹp, và trong một số trường hợp đặc biệt Java có thể chạy nhanh hơn. Java chạy nhanh hơn những ngôn ngữ thông dịch như Python, Perl, PHP gấp nhiều lần. Java chạy tương đương so với C#, một ngôn ngữ khá tương đồng về mặt cú pháp và quá trình dịch/chạy[10][11]
Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn. Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn. Nhưng về lập trình hướng đối tượng thì Java phức tạp hơn.
Trong Java, hiện tượng rò rỉ bộ nhớ hầu như không xảy ra do bộ nhớ được quản lý bởi Java Virtual Machine (JVM) bằng cách tự động "dọn dẹp rác". Người lập trình không phải quan tâm đến việc cấp phát và xóa bộ nhớ như C, C++. Tuy nhiên khi sử dụng những tài nguyên mạng, file IO, database (nằm ngoài kiểm soát của JVM) mà người lập trình không đóng (close) các streams thì rò rỉ dữ liệu vẫn có thể xảy ra.
Lịch sử JavaSửa đổi
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun Microsystems năm 1991. Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi; do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này), họ dự định ngôn ngữ đó thay cho C++, nhưng các tính năng giống Objective C. Không nên lẫn lộn Java với JavaScript, hai ngôn ngữ đó chỉ giống tên và loại cú pháp như C. Công ty Sun Microsystems đang giữ bản quyền và phát triển Java thường xuyên. Tháng 04/2011, công ty Sun Microsystems tiếp tục cho ra bản JDK 1.6.24.
Java được tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp nơi" ("Write Once, Run Anywhere" (WORA)). Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó. Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac OS, FreeBSD & Windows. Ngoài ra, một số công ty, tổ chức cũng như cá nhân khác cũng phát triển môi trường thực thi Java cho những hệ điều hành khác như BEA, IBM, HP.... Trong đó đáng nói đến nhất là IBM Java Platform hỗ trợ Windows, Linux, AIX & z/OS.
Những chi tiết về ngôn ngữ, máy ảo và API của Java được giữ bởi Cộng đồng Java (do Sun quản lý). Java được tạo ra vào năm 1991 do một số kỹ sư ở Sun, bao gồm ông James Gosling, một phần của Dự án Xanh (Green Project). Java được phát hành vào năm 1994, rồi nó trở nên nổi tiếng khi Netscape tuyên bố tại hội thảo SunWorld năm 1995 là trình duyệt Navigator của họ sẽ hỗ trợ Java. Về sau Java được hỗ trợ trên hầu hết các trình duyệt như Internet Explorer (Microsoft), Firefox (Mozilla), Safari (Apple)...
Java được sử dụng chủ yếu trên môi trường NetBeans và Oracle. Sau khi Oracle mua lại công ty Sun Microsystems năm 2009-2010, Oracle đã mô tả họ là "người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng tham gia và minh bạch".[12]
Phương châmSửa đổi
Có 6 mục tiêu chính trong việc xây dựng ngôn ngữ Java:[13]
- Đơn giản, hướng đối tượng và quen thuộc.
- Mạnh mẽ và an toàn.
- Kiến trúc trung lập và di động.
- Thực thi với hiệu suất cao.
- Dịch ra bytecode, phân luồng và năng động.
- Dễ sử dụng cho người dùng Java
Phiên bảnSửa đổi
Các phiên bản Java đã phát hành:
- JDK 1.0 (23 tháng 01, 1996)
- JDK 1.1 (19 tháng 2 năm 1997)
- JDK 1.1.5 (Pumpkin) 03 tháng 12 năm 1997
- JDK 1.1.6 (Abigail) 24 tháng 4 năm 1998
- JDK 1.1.7 (Brutus) 28 tháng 9 năm 1998
- JDK 1.1.8 (Chelsea) 08 tháng 4 năm 1999
- J2SE 1.2 (Playground) 08 tháng 12 năm 1998
- J2SE 1.2.1 (không có) 30 tháng 3 năm 1999
- J2SE 1.2.2 (Cricket) 08 tháng 7 năm 1999
- J2SE 1.3 (Kestrel) 08 tháng 5 năm 2000
- J2SE 1.3.1 (Ladybird) 17 tháng 5 năm 2001
- J2SE 1.4.0 (Merlin) 06 tháng 02, 2002
- J2SE 1.4.1 (Hopper) 16 tháng 9 năm 2002
- J2SE 1.4.2 (Mantis) 26 tháng 6 năm 2003
- J2SE 5 (1.5.0) (Tiger) 30 tháng 9 năm 2004
- Java SE 6 (còn gọi là Mustang), được công bố 11 tháng 12 năm 2006, thông tin chính tại http://java.sun.com/javase/6/. Các bản cập nhật 2 và 3 được đưa ra vào năm 2007, bản cập nhật 4 đưa ra tháng 1 năm 2008.
- JDK 6.18, 2010
- Java SE 7 (còn gọi là Dolphin), được bắt đầu từ tháng 8 năm 2006 và công bố ngày 28 tháng 7 năm 2011.
- JDK 8, 18 tháng 3 năm 2014
- JDK 9, 21 tháng 9 năm 2017
- JDK 10, 20 tháng 3 năm 2018
- Link tải java: https://java.com/en/download/
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:
- Java API cho RESTful Web Services (JAX-RS 2.0) hữu ích cho AJAX, JSON và dịch vụ REST, và
- Java API cho XML Web Services (JAX-WS) hữu ích cho dịch vụ web SOAP.
Sự phổ biếnSửa đổi
Tính đến ngày 9 tháng 12 năm 2017, Java là ngôn ngữ lập trình phổ biến nhất thế giới với tỉ lệ 13,268%, nhưng đã giảm 4,59% so với cùng kì năm trước. 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, nhưng Java là ngôn ngữ duy nhất giữ được tỉ lệ trên 10%, trong khi C đã tụt xuống 6,478% vào ngày 2/8/2017.[14]
Ghi chúSửa đổi
- ^ Java 5.0 added several new language features (the enhanced for loop, autoboxing, varargs và annotations), after they were introduced in the similar (and competing) C# language [1] [2]
- ^ Gosling, James; and McGilton, Henry (tháng 5 năm 1996). “The Java Language Environment”.
- ^ Gosling, James; Joy, Bill; Steele, Guy; and Bracha, Gilad. “The Java Language Specification, 2nd Edition”.
- ^ “The A-Z of Programming Languages: Modula-3”. Computerworld.com.au. Truy cập ngày 9 tháng 6 năm 2010.
- ^ 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.
- ^ 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]
- ^ 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
- ^ “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.
- ^ Gosling và đồng nghiệp 2014, tr. 1.
- ^ “Programming Language Popularity”. 2009. Bản gốc lưu trữ ngày 16 tháng 1 năm 2009. Truy cập ngày 16 tháng 1 năm 2009.
- ^ “TIOBE Programming Community Index”. 2009. Truy cập ngày 6 tháng 5 năm 2009.
- ^
“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.
- ^ “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.
- ^ “Tiobe Index”. TIOBE. Truy cập ngày 31 tháng 12 năm 2017.
Liên kết ngoàiSửa đổi
- java.com
- Oracle's Developer Resources for Java Technology.
- Oracle's Beginner's tutorial for Java SE Programming
- A Brief History of the Green Project Lưu trữ 2007-06-18 tại Wayback Machine
- Michael O'Connell: Java: The Inside Story, SunWord, July 1995.
- Patrick Naughton: Java Was Strongly Influenced by Objective-C (no date).
- David Bank: The Java Saga, Wired Issue 3.12 (December 1995).
- Patrick Naughton: The Long Strange Trip to Java, ngày 18 tháng 3 năm 1996.
- Open University (UK): M254 Java Everywhere Lưu trữ 2012-08-09 tại Wayback Machine (free open content documents).
- is-research GmbH: List of programming languages for a Java Virtual Machine.
- How Java's Floating-Point Hurts Everyone Everywhere, by W. Kahan and Joseph D. Darcy, University of California, Berkeley.
- Shahrooz Feizabadi: A history of Java in: Marc Abrams, ed., World Wide Web – Beyond the Basics, Prentice Hall, 1998.