Các phiên bản Java khác nhau này để làm gì?


63

Tôi sắp bắt đầu hành trình Java của mình , (tôi đã tìm hiểu về C ++) nhưng tôi thực sự bối rối về tất cả các phiên bản Java khác nhau:

  • JavaSE
  • JavaEE
  • JavaFX
  • Vân vân.

Ai đó có thể giải thích những điều này một cách chi tiết?

Câu trả lời:


107

Java đúng

Phiên bản Java Standardphiên bản "bình thường" được thiết kế cho máy tính nói chung. Nó, giống như tất cả các biến thể khác của Java, là một ngôn ngữ hướng đối tượng, được định dạng tĩnh, được biên dịch bằng mã byte, chạy trên một máy ảo với bộ sưu tập rác hoàn toàn tự động. Nó có hầu hết các tính năng của ngôn ngữ. Ví dụ về các ứng dụng sẽ là các ứng dụng như Minecraft hoặc ArgoUML. Nó có thể được chạy dưới dạng một ứng dụng máy tính để bàn độc lập hoặc một ứng dụng nhúng trong trang web dưới dạng Applet.

Java Enterprise Edition không phải là một ngôn ngữ khác nhưng là các đặc tả Giao diện được thiết kế để tạo ra phần mềm chạy bên trong triển khai Máy chủ ứng dụng. Sự khác biệt chính ở đây là nó được thiết kế để triển khai cho Máy chủ ứng dụng phù hợp với thông số kỹ thuật của Giao diện phiên bản doanh nghiệp; Java SE có thể được sử dụng để viết các máy chủ độc lập nhưng không bao gồm các Giao diện được tiêu chuẩn hóa và mục đích thông số kỹ thuật được xây dựng theo cách Java EE. Ví dụ sẽ là các ứng dụng được thiết kế để chạy trên Glassfish (triển khai tham chiếu Java EE), JBoss, v.v.

Java Micro Edition là Java được thiết kế để chạy trên thiết bị di động. Cần lưu ý rằng đây không giống như Android. Java ME được thiết kế để đối phó với phần cứng di động tốt hơn Java SE. Tôi sử dụng Pantec Easy như một điện thoại di động, nó chạy Java ME.

Thẻ Java thậm chí còn "nhỏ hơn" nhắm đến các thiết bị thực sự cấp thấp như thẻ ATM thông minh. Vâng, một số trong số họ thực sự có Java trên chúng.

JavaFX là một khung được thiết kế để xây dựng các ứng dụng GUI của máy khách Internet phong phú.

Gia đình ngôn ngữ JVM

Đầu tiên, JVM . Đây là một máy ảo dựa trên ngăn xếp chạy mã hóa được biên dịch, trông rất giống ngôn ngữ lắp ráp. Tối ưu hóa có thể làm cho nó chạy khá nhanh trong các tình huống rất chuyên biệt.

Đó là cho Oracle Java Stuff thực tế, bây giờ cho những thứ mọi người thường sử dụng trên JVM. Tất cả các ngôn ngữ này đều có các giao diện Java và thường có thể gọi hầu hết hoặc tất cả các thư viện Java.

Groovy là một ngôn ngữ được định hướng theo đối tượng, được gõ động với một cú pháp ngắn gọn hơn, được coi là một sự thay thế dễ dàng hơn, mạnh mẽ hơn cho Java. Nó được thiết kế như một loại ngôn ngữ mở rộng cho Java, cho phép gần như kéo và thả các tệp Java vào các chương trình Groovy. Nó có một khung thường được liên kết với nó để phát triển web được gọi là Grails .

Scala là một ngôn ngữ chức năng / hướng đối tượng lai gần đây (2003) được thiết kế để có khả năng mở rộng cao, do đó có tên. Twitter là một người dùng nặng của Scala.

Clojure là một ngôn ngữ chức năng gần đây (2007) của gia đình Lisp. Nó được thiết kế để lập trình đồng thời nặng ngay từ đầu. Tôi không có một ví dụ phần mềm tốt cho cái này nhưng có một số công ty sử dụng nó.

JythonJRuby lần lượt là các phiên bản mã byte Java của PythonRuby .

Có một số ngôn ngữ khác cho JVM ngoài kia như Jaskell (Haskell cho JVM) nhưng chúng có xu hướng mơ hồ / thí nghiệm hàn lâm.

Những thứ liên quan

Android sử dụng Java nhưng chạy trên máy dựa trên đăng ký Dalvik. Dalvik hiện là đối tượng của một vụ kiện chống lại Google, người áp dụng nó. Android về cơ bản là Java SE với một bộ Thư viện khác.

NetbeansEclipse là hai IDE Java được nói đến rộng rãi nhất. Đặt câu hỏi về cái này với cái kia sẽ gọi đóng cửa và tôi không có nghĩa là khái niệm lập trình.

Những thứ không liên quan

Javascript hoàn toàn không phải là Java ... Nó được đặt tên là để tận dụng sự phổ biến của Java và sự nhầm lẫn đã gây khó chịu kể từ đó.

Tê giác trong phòng

Rhino là một trình thông dịch Javascript biến Mã Javascript thành mã Java sau đó có thể chạy ở đâu đó. Đó không phải là một ngôn ngữ riêng biệt "per se" mà giống như bất kỳ thứ gì khác có tập hợp các quirks riêng. Rhino được Mozilla phát triển như một giải pháp thay thế cho trình thông dịch SpiderMonkey dựa trên C của họ. Rhino thường được sử dụng để nhúng Javascript trong một chương trình Java.

Nashorn , được phát triển bởi Oracle (có thể với mức độ hiệu quả của Đức) cho JDK 8, dường như là tiêu chuẩn mới cho Javascript nhúng trong Java. Điều này có nghĩa là Rhino không còn được sử dụng cho việc triển khai chính của Java. Điều này có nghĩa gì cho dự án Rhino không rõ ràng tại thời điểm này.


1
Cảm ơn rất nhiều! Đó là những gì tôi đang tìm kiếm :) Một câu hỏi nữa: J2SE, J2EE, v.v ... đây chỉ là những phiên bản mới hơn của SE, EE, v.v?
Patryk

8
Có, J2EE và J2SE là phiên bản hai phiên bản Java Enterprise Edition tương ứng. Kế hoạch đặt tên này không còn theo sau mặc dù. Các phiên bản hiện tại được gọi là Java SE 6 (hoặc 5/7) và Java EE 5 (hoặc 6).
BenR

1
Có Java cho thẻ thông minh? Tâm trí kính râm.
Megan Walker

1
Một câu trả lời để cai trị tất cả!
người dùng

1
Kể từ JDK8, Rhino không được dùng nữa (đã xóa?). Nashorn là tê giác mới.
Silviu Burcea
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.