Java (ngôn ngữ lập trình) – Wikipedia tiếng Việt

Đối với những định nghĩa khác, xem Java ( xu thế )

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ư C và C++, 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 bắt đầu được James Gosling tại Sun Microsystems ( sau đó đã được Oracle mua lại ) tăng trưởng 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 bắt đầ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 những thông số kỹ thuật kỹ thuật của Quy trình Cộng đồng Java, Sun đã cấp phép hầu hết những công nghệ Java của mình theo Giấy phép Công cộng GNU. Oracle phân phối Máy ảo Java HotSpot của riêng mình, tuy nhiên việc tiến hành tham chiếu chính thức là OpenJDK JVM, là ứng dụng mã nguồn mở không lấy phí và được hầu hết những nhà tăng trưởng sử dụng và là JVM mặc định cho hầu hết những 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.

Bạn đang đọc: Java (ngôn ngữ lập trình) – Wikipedia tiếng Việt">Java (ngôn ngữ lập trình) – Wikipedia tiếng Việt

Oracle ( và những công ty khác ) khuyên người dùng nên gỡ thiết lập những phiên bản Java đã lỗi thời vì những rủi ro đáng tiếc nghiêm trọng do những yếu tố bảo mật thông tin chưa được xử lý. [ 14 ] Vì Java 9, 10, 12, 13 và 14 không còn được tương hỗ, 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 .
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 nhiều máy ảo Java ( JVM ) của mình dưới dạng ứng dụng mã nguồn mở và không tính tiền ( FOSS ), theo những pháp luật của Giấy phép Công cộng GNU ( GPL ). Vào ngày 8 tháng 5 năm 2007, Sun đã triển khai xong quy trình, phân phối tổng thể mã cốt lõi của JVM theo những lao lý phân phối ứng dụng không lấy 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 năm nay, Oracle đã thông tin rằng thiên nhiên và môi trường thời hạn chạy Java dựa trên JDK 9 sẽ ngừng cung ứng 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 TT tài liệu, bảng điều khiển và tinh chỉnh game show đến siêu máy tính khoa học. [ 31 ]
Có 5 tiềm năng chính trong việc thiết kế xây dựng ngôn từ 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 và động.

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

Version
Date

JDK Beta
1995

JDK1.0
ngày 23 tháng 1 năm 1996 [33]

JDK 1.1
ngày 19 tháng 2 năm 1997

J2SE 1.2
ngày 8 tháng 12 năm 1998

J2SE 1.3
ngày 8 tháng 5 năm 2000

J2SE 1.4
ngày 6 tháng 2 năm 2002

J2SE 5.0
ngày 30 tháng 9 năm 2004

Java SE 6
ngày 11 tháng 12 năm 2006

Java SE 7
ngày 28 tháng 7 năm 2011

Java SE 8
ngày 18 tháng 3 năm 2014

Java SE 9
ngày 21 tháng 9 năm 2017

Java SE 10
ngày 20 tháng 3 năm 2018

Java SE 11
ngày 25 tháng 9 năm 2018 [34]

Java SE 12
ngày 19 tháng 3 năm 2019

Java SE 13
ngày 17 tháng 9 năm 2019

Java SE 14
ngày 17 tháng 3 năm 2020

Java SE 15
ngày 15 tháng 9 năm 2020

Sun đã xác lập và tương hỗ bốn phiên bản Java nhắm tiềm năng những môi trường tự nhiên ứ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 những nền tảng. Các nền tảng là :
Các lớp trong Java API được tổ chức triển khai thành những nhóm riêng không liên quan gì đến nhau gọi là gói. Mỗi gói chứa một tập hợp những giao diện, lớp, gói con và ngoại lệ tương quan .Sun cũng cung ứng một phiên bản có tên là Personal Java đã được sửa chữa thay thế bằng những cặp thông số kỹ thuật Java ME dựa trên tiêu chuẩn sau này .

Hệ thống thực thi[sửa|sửa mã nguồn]

Java JVM và bytecode[sửa|sửa mã nguồn]

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 ứng một cách chung để truy vấn những tính năng dành riêng cho sever như đồ họa, phân luồng và mạng .Việc sử dụng bytecode thông dụng làm cho việc chuyển cổng trở nên đơn thuần. Tuy nhiên, ngân sách của việc thông dịch bytecode thành những lệnh máy làm cho những chương trình được thông dịch phần nhiều luôn chạy chậm hơn những 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 hạn chạy đã được ra mắt từ tiến trình đầu. Bản thân Java độc lập với nền tảng và được kiểm soát và điều chỉnh cho tương thích với nền tảng đơn cử 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 ]
Các chương trình được viết bằng Java nổi tiếng là chậm hơn và yên cầu nhiều bộ nhớ hơn những chương trình được viết bằng C + +. [ 40 ] [ 41 ] Tuy nhiên, vận tốc thực thi của những chương trình Java được cải tổ đáng kể với sự sinh ra 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ổ trợ những tính năng ngôn từ tương hỗ nghiên cứu và phân tích mã tốt hơn ( ví dụ điển hình như những lớp bên trong, lớp StringBuilder, những xác nhận tùy chọn, v.v. ) và tối ưu hóa trong máy ảo Java, ví dụ điển hình 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 tổ với việc bổ trợ gói java.util.concurrent, gồm có khóa những tiến hành không tính tiền của ConcurrentMaps và những bộ sưu tập đa lõi khác và nó đã được cải tổ hơn nữa với Java 1.6 .
Một số nền tảng cung ứng tương hỗ phần cứng trực tiếp cho Java ; có những bộ tinh chỉnh và điều khiển vi mô hoàn toàn có thể chạy Java bytecode trong phần cứng thay vì máy ảo Java ứng dụng, [ 43 ] và một số ít bộ giải quyết và xử lý dựa trên ARM hoàn toàn có thể có tương hỗ phần cứng để thực thi Java bytecode trải qua tùy chọn Jazelle của chúng, mặc dầu tương hỗ hầu hết đã bị vô hiệu trong những tiến hành hiện tại của ARM .

Quản lý bộ nhớ tự động hóa[sửa|sửa mã nguồn]

Java sử dụng bộ thu gom rác tự động hóa ( AGC ) để quản trị bộ nhớ trong vòng đời đối tượng người tiêu dùng. Lập trình viên xác lập thời gian những đối tượng người dùng được tạo và thời hạn chạy Java chịu nghĩa vụ và trách nhiệm Phục hồi bộ nhớ khi những đối tượng người tiêu dùng không còn được sử dụng. Khi không còn tham chiếu đến một đối tượng người dùng, bộ nhớ không hề truy vấn sẽ đủ điều kiện kèm theo để được giải phóng tự động hóa bởi bộ thu gom rác. Một cái gì đó tương tự như như rò rỉ bộ nhớ vẫn hoàn toà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 người tiêu dùng không còn thiết yếu, thường là khi những đối tượng người dùng không còn thiết yếu được tàng trữ trong những bộ chứa vẫn đang được sử dụng. Nếu những phương pháp cho một đối tượng người tiêu dùng không sống sót được gọi, một ngoại lệ con trỏ null sẽ được đưa ra. [ 44 ] [ 45 ]Một trong những sáng tạo độc đáo đằng sau quy mô quản trị bộ nhớ tự động hóa của Java là những lập trình viên hoàn toàn có thể không phải chịu gánh nặng khi phải thực thi quản trị bộ nhớ thủ công bằng tay. Trong 1 số ít ngôn từ, bộ nhớ để tạo những đối tượng người tiêu dùng được cấp phép ngầm trên ngăn xếp hoặc được cấp phép và phân chia rõ ràng từ heap. Trong trường hợp thứ hai, nghĩa vụ và trách nhiệm quản trị bộ nhớ thuộc về lập trình viên. Nếu chương trình không phân chia một đối tượng người tiêu dùng, một rò rỉ bộ nhớ sẽ xảy ra. Nếu chương trình cố gắng nỗ lực truy vấn hoặc phân chia bộ nhớ đã được phân chia, hiệu quả là không xác lập và khó Dự kiến, và chương trình hoàn toàn có thể trở nên không không thay đổi hoặc gặp sự cố. Điều này hoàn toàn có thể được khắc phục một phần bằng cách sử dụng những con trỏ mưu trí, nhưng chúng làm tăng thêm ngân sách và sự phức tạp. Lưu ý rằng việc thu gom rác không ngăn ngừa rò rỉ bộ nhớ logic, tức là những nơi bộ nhớ vẫn được tham chiếu nhưng không khi nào được sử dụng .Việc thu gom rác hoàn toàn có thể xảy ra bất kỳ khi nào. Lý tưởng nhất, nó sẽ xảy ra khi một chương trình không hoạt động giải trí. Nó được bảo vệ sẽ được kích hoạt nếu không có đủ bộ nhớ trống trên heap để cấp phép một đối tượng người dùng mới ; điều này hoàn toàn có thể khiến một chương trình bị dừng trong giây lát. Không thể quản trị bộ nhớ rõ ràng trong Java .Java không tương hỗ số học con trỏ kiểu C / C + +, trong đó địa chỉ đối tượng người tiêu dùng hoàn toàn 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 được cho phép bộ thu gom rác chuyển dời những đối tượng người dùng được tham chiếu và bảo vệ bảo đảm an toàn và bảo mật thông tin kiểu .Giống như trong C + + và 1 số ít ngôn từ hướng đối tượng người dùng khác, những biến của kiểu tài liệu nguyên thủy của Java hoặc được tàng trữ trực tiếp trong những trường ( so với những đối tượng người dùng ) hoặc trên ngăn xếp ( so với những phương pháp ) chứ không phải trên heap, điều này thường đúng so với tài liệu không nguyên thủy những loại ( nhưng hãy xem phân tích thoát ). Đây là một quyết định hành động có ý thức của những nhà phong cách thiết kế của Java vì nguyên 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ố ít trình thu gom rác khác hoàn toàn có thể được sử dụng để quản trị đố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 tiềm năng thay thế sửa chữa CMS bằng Garbage-First Collector ( G1 ). [ 48 ]Giải quyết được yếu tố quản trị bộ nhớ không giúp lập trình viên bớt gánh nặng giải quyết và xử lý đúng cách những loại tài nguyên khác, như liên kết mạng hoặc cơ sở tài liệu, giải quyết và xử lý tệp, v.v., đặc biệt quan trọng là khi có lỗi .

Các lớp đặc biệt quan trọng[sửa|sửa mã nguồn]

Java applet là những chương trình được nhúng vào trong những ứng dụng khác, thường là trong một website 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 .
Công nghệ Java servlet phân phối cho những nhà tăng trưởng Web một chính sách đồng điệu, đơn thuần để lan rộng ra tính năng của sever Web và để truy vấn những mạng lưới hệ thống kinh doanh thương mại hiện có. Servlet là những thành phần Java EE phía sever tạo ra những phản hồi ( thường là những trang HTML ) cho những nhu yếu ( thường là những nhu yếu HTTP ) từ máy khách .Ở một mức độ nào đó, API của Java servlet đã được sửa chữa thay thế bởi hai công nghệ Java cho dịch vụ web :

Sự phổ cập[sửa|sửa mã nguồn]

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 từ lập trình phổ cập thứ nhì quốc tế với tỉ lệ 11,96 % chỉ xếp sau ngôn từ C. Qua nhiều năm Java và C vẫn luôn chiếm hai vị trí tiên phong trong bảng những ngôn từ lập trình phổ cập nhất suốt 20 năm qua, tuy những năm gần đây độ thông dụng có khuynh hướng giảm nhưng Java vẫn giữ được tỉ lệ trên 10 % mặc cho sự tăng trưởng chóng mặt của quốc tế công nghệ tiên tiến, Java bộc lộ đẳng cấp và sang trọng một ngôn từ lập trình chất lượng của quả đât. [ 49 ]

Liên kết ngoài[sửa|sửa mã nguồn]

Các bài viết liên quan

Viết một bình luận