Sự khác biệt giữa JDK và JRE là gì?
Vai trò của họ là gì và khi nào tôi nên sử dụng cái này hay cái kia?
Sự khác biệt giữa JDK và JRE là gì?
Vai trò của họ là gì và khi nào tôi nên sử dụng cái này hay cái kia?
Câu trả lời:
Các JRE là Java Runtime Environment . Nó là một gói của tất cả mọi thứ cần thiết để chạy một chương trình Java đã biên dịch, bao gồm Máy ảo Java (JVM), Thư viện lớp Java, java
lệnh và cơ sở hạ tầng khác. Tuy nhiên, nó không thể được sử dụng để tạo chương trình mới.
Các JDK là Java Development Kit , SDK đầy đủ tính năng cho Java. Nó có mọi thứ mà JRE có, nhưng cũng có trình biên dịch ( javac
) và các công cụ (như javadoc
và jdb
). Nó có khả năng tạo và biên dịch chương trình.
Thông thường, nếu bạn chỉ quan tâm đến việc chạy các chương trình Java trên máy tính, bạn sẽ chỉ cài đặt JRE. Đó là tất cả những gì bạn cần. Mặt khác, nếu bạn dự định thực hiện một số lập trình Java, bạn cần cài đặt JDK thay thế.
Đôi khi, ngay cả khi bạn không có kế hoạch thực hiện bất kỳ phát triển Java nào trên máy tính, bạn vẫn cần cài đặt JDK. Ví dụ, nếu bạn đang triển khai một ứng dụng web với JSP, về mặt kỹ thuật bạn chỉ đang chạy các chương trình Java bên trong máy chủ ứng dụng. Tại sao bạn lại cần JDK? Bởi vì máy chủ ứng dụng sẽ chuyển đổi JSP thành các máy chủ Java và cần sử dụng JDK để biên dịch các máy chủ. Tôi chắc chắn rằng có nhiều ví dụ.
Câu trả lời ở trên (của Pablo) là rất đúng. Đây chỉ là thông tin bổ sung.
Các JRE là, như tên của nó, một môi trường . Về cơ bản, đó là một loạt các thư mục với các tệp liên quan đến Java, để dí dỏm:
bin/
chứa các chương trình thực thi của Java. Điều quan trọng nhất là java
(và đối với Windows, javaw
cũng vậy), khởi chạy JVM. Có một số tiện ích khác ở đây là tốt, chẳng hạn như keytool
và policytool
.conf/
giữ các tệp cấu hình có thể chỉnh sửa của người dùng để các chuyên gia Java chơi cùng.lib/
có một số lượng lớn các tệp hỗ trợ: một số .jar
tệp, tệp cấu hình, tệp thuộc tính, phông chữ, bản dịch, certs, v.v. - tất cả các "trang trí" của Java. Điều quan trọng nhất là modules
, một tệp chứa các .class
tệp của thư viện chuẩn Java..dll
(Windows) hoặc .dylib
(macOS) hoặc .so
(Linux) bên dưới bin/
hoặc lib/
với mã nhị phân riêng hỗ trợ, dành riêng cho hệ thống.Các JDK cũng là một tập hợp các thư mục. Nó là một superset của JRE, với một số bổ sung:
bin/
đã được mở rộng với các công cụ phát triển. Điều quan trọng nhất trong số đó là javac
; những người khác bao gồm jar
, javadoc
và jshell
.jmods/
, chứa các tệp JMOD cho thư viện chuẩn, đã được thêm vào. Những tập tin này cho phép thư viện chuẩn được sử dụng jlink
.JDK là một siêu bộ của JRE và chứa mọi thứ có trong JRE, cộng với các công cụ như trình biên dịch và trình gỡ lỗi cần thiết để phát triển các ứng dụng và ứng dụng. JRE cung cấp các thư viện, Máy ảo Java (JVM) và các thành phần khác để chạy các applet và ứng dụng được viết bằng ngôn ngữ lập trình Java.
Theo cách nói của giáo dân: JDK là ông nội JRE là cha và JVM là con trai của họ. [tức là JDK> JRE> JVM]
JDK = JRE + Công cụ phát triển / gỡ lỗi
JRE = JVM + Các lớp gói Java (như produc, math, lang, awt, swing, v.v.) + thư viện thời gian chạy.
JVM = Hệ thống trình nạp lớp + vùng dữ liệu thời gian chạy + Công cụ thực thi.
Nói cách khác, nếu bạn là một lập trình viên Java, bạn sẽ cần JDK trong hệ thống của mình và gói này cũng sẽ bao gồm JRE và JVM, nhưng nếu bạn là người dùng bình thường thích chơi trò chơi trực tuyến thì bạn sẽ chỉ cần JRE và gói này sẽ không có JDK trong đó.
JVM:
Các Java Virtual Machine (JVM) là máy ảo chạy bytecode Java. JVM không hiểu mã nguồn Java, đó là lý do tại sao bạn biên dịch các tệp * .java của mình để có được các tệp *. Class có chứa mã byte do JVM hiểu được. Đây cũng là thực thể cho phép Java là "ngôn ngữ di động" (viết một lần, chạy mọi nơi). Thật vậy, có các triển khai cụ thể của JVM cho các hệ thống khác nhau (Windows, Linux, MacOS, xem danh sách wikipedia ..), mục đích là với cùng một mã byte, tất cả chúng đều cho kết quả giống nhau.
JDK và JRE
Để giải thích sự khác biệt giữa JDK và JRE, tốt nhất là đọc tài liệu của Oracle và tham khảo sơ đồ:
Môi trường chạy thi hành Java (JRE)
Các Java Runtime Environment (JRE) cung cấp các thư viện, Java Virtual Machine, và các thành phần khác để chạy applet và các ứng dụng viết bằng ngôn ngữ lập trình Java. Ngoài ra, hai công nghệ triển khai chính là một phần của JRE: Java Plug-in, cho phép các applet chạy trong các trình duyệt phổ biến; và Java Web Start, triển khai các ứng dụng độc lập qua mạng. Nó cũng là nền tảng cho các công nghệ trong Nền tảng Java 2, Phiên bản doanh nghiệp (J2EE) để phát triển và triển khai phần mềm doanh nghiệp. JRE không chứa các công cụ và tiện ích như trình biên dịch hoặc trình gỡ lỗi để phát triển các ứng dụng và ứng dụng.
Bộ phát triển Java (JDK)
JDK là một siêu bộ của JRE và chứa mọi thứ có trong JRE, cộng với các công cụ như trình biên dịch và trình gỡ lỗi cần thiết để phát triển các ứng dụng và ứng dụng.
Lưu ý rằng Oracle không phải là người duy nhất cung cấp JDK.
Từ trang web java chính thức ...
JRE (môi trường thời gian chạy Java):
JDK (Bộ phát triển Java)
Một điểm khác biệt từ góc độ gỡ lỗi:
Để gỡ lỗi vào các lớp hệ thống Java như String và ArrayList, bạn cần một phiên bản đặc biệt của JRE được biên dịch với "thông tin gỡ lỗi". JRE được bao gồm trong JDK cung cấp thông tin này, nhưng JRE thông thường thì không. JRE thông thường không bao gồm thông tin này để đảm bảo hiệu suất tốt hơn.
Thông tin gỡ lỗi là gì? Dưới đây là một lời giải thích nhanh chóng được lấy từ bài đăng trên blog này :
Các trình biên dịch hiện đại thực hiện công việc khá tốt khi chuyển đổi mã cấp cao của bạn, với các cấu trúc điều khiển được thụt vào và lồng vào nhau và các biến được gõ tùy ý thành một đống bit lớn gọi là mã máy (hoặc mã byte trong trường hợp Java), mục đích duy nhất là để chạy nhanh nhất có thể trên CPU mục tiêu (CPU ảo của JVM của bạn). Mã Java được chuyển đổi thành một số hướng dẫn mã máy. Các biến được đẩy khắp nơi - vào ngăn xếp, vào các thanh ghi hoặc tối ưu hóa hoàn toàn. Các cấu trúc và các đối tượng thậm chí không tồn tại trong mã kết quả - chúng chỉ là một sự trừu tượng được dịch sang các mã hóa cứng thành bộ đệm.
Vì vậy, làm thế nào để một trình sửa lỗi biết nơi dừng lại khi bạn yêu cầu nó phá vỡ tại lối vào một số chức năng? Làm thế nào nó quản lý để tìm thấy những gì để hiển thị cho bạn khi bạn yêu cầu nó cho giá trị của một biến? Câu trả lời là - gỡ lỗi thông tin.
Thông tin gỡ lỗi được tạo bởi trình biên dịch cùng với mã máy. Nó là một đại diện của mối quan hệ giữa chương trình thực thi và mã nguồn gốc. Thông tin này được mã hóa thành định dạng được xác định trước và được lưu trữ cùng với mã máy. Nhiều định dạng như vậy đã được phát minh qua nhiều năm cho các nền tảng và tệp thực thi khác nhau.
JVM, JRE, JDK - đây đều là xương sống của ngôn ngữ Java. Mỗi thành phần làm việc riêng biệt. JDK và JRE tồn tại về mặt vật lý nhưng JVM là một cỗ máy trừu tượng có nghĩa là nó không tồn tại về mặt vật lý.
JVM là hệ thống con của JDK và JRE, được sử dụng để kiểm tra mã trung gian được gọi là "mã byte". Đầu tiên, nó tải "tệp lớp" (có phần mở rộng .c) do trình biên dịch Java (javac) tạo ra thông qua trình nạp lớp hệ thống con JVM và vị trí bộ nhớ được phân loại (vùng đăng ký, ngăn xếp, heap và pc) theo cách sử dụng của chúng. Sau đó, nó kiểm tra tất cả mã byte để đảm bảo rằng nó được trả về trong Java và tất cả các truy cập bộ nhớ truy cập của mạng. Công việc của trình thông dịch bắt đầu sau đó nơi nó kiểm tra toàn bộ dòng chương trình theo từng dòng. Các kết quả cuối cùng được hiển thị trong bảng điều khiển / trình duyệt / ứng dụng thông qua JRE (Java Runtime Môi trường) mà các phương tiện thời gian chạy.
JRE cũng là một hệ thống con của JDK cung cấp các phương tiện thời gian chạy như JVM, các lớp, các tệp thực thi như tệp .jar, v.v.
JDK là viết tắt của Java Development Kit. Nó chứa tất cả các thành phần cần thiết được sử dụng trong lập trình Java như lớp, phương thức, swing, AWT, gói, Java (trình thông dịch), javac (trình biên dịch), appletviewer (trình xem ứng dụng applet), v.v. Để kết luận, nó chứa mọi tệp cần thiết để phát triển các ứng dụng, cho dù độc lập hay dựa trên web.
JRE
JRE là từ viết tắt của Java Runtime Môi trường. Nó được sử dụng để cung cấp môi trường thời gian chạy. Đây là việc triển khai JVM. Nó tồn tại về mặt vật lý. Nó chứa tập hợp các thư viện + các tệp khác mà JVM sử dụng khi chạy.
JDK
JDK là từ viết tắt của Java Development Kit. Nó tồn tại về mặt vật lý. Nó chứa các công cụ phát triển JRE +.
Liên kết: - http://www.javatpoint.com/difference-b between - jdk - jre - and - jvm
Thông thường, khi bạn chỉ quan tâm đến việc chạy các chương trình Java trên trình duyệt hoặc máy tính của mình, bạn sẽ chỉ cài đặt JRE. Đó là tất cả những gì bạn cần. Mặt khác, nếu bạn dự định thực hiện một số lập trình Java, bạn cũng sẽ cần JDK.
JVM, JRE và JDK phụ thuộc vào nền tảng vì cấu hình của mỗi HĐH khác nhau. Nhưng, Java là nền tảng độc lập.
Máy ảo Java (JVM) là một hệ thống thời gian chạy thực thi mã byte Java.
JRE là môi trường (thư viện chuẩn và JVM) cần thiết để chạy các ứng dụng Java.
JDK bao gồm các công cụ phát triển dòng lệnh JRE plus như trình biên dịch và trình gỡ lỗi cần thiết hoặc hữu ích để phát triển các ứng dụng và ứng dụng.
Đây là một phản hồi đơn giản trực tiếp từ Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Môi trường thời gian chạy Java SE (JRE)
JRE cung cấp các thư viện, máy ảo Java và các thành phần khác cần thiết để bạn chạy các applet và ứng dụng được viết bằng ngôn ngữ lập trình Java. Môi trường thời gian chạy này có thể được phân phối lại với các ứng dụng để làm cho chúng đứng tự do.
Bộ công cụ phát triển Java SE (JDK)
JDK bao gồm các công cụ phát triển dòng lệnh JRE plus như trình biên dịch và trình gỡ lỗi cần thiết hoặc hữu ích để phát triển các ứng dụng và ứng dụng.
Nếu bạn muốn chạy các chương trình Java, nhưng không phát triển chúng, hãy tải xuống Môi trường thời gian chạy Java hoặc JRE. Nếu bạn muốn phát triển chúng, hãy tải xuống bộ Phát triển Java hoặc JDK
Chúng ta gọi JDK là một bộ công cụ, bao gồm những thứ cần thiết để phát triển và chạy các ứng dụng java.
JDK được đưa ra làm môi trường phát triển để xây dựng các ứng dụng, thành phần và applet.
Nó chứa mọi thứ bạn cần để chạy các ứng dụng Java ở dạng biên dịch. Bạn không cần bất kỳ thư viện và những thứ khác. Tất cả những thứ bạn cần được biên soạn.
JRE không thể được sử dụng để phát triển, chỉ được sử dụng để chạy các ứng dụng.
JVM (Máy ảo Java) là một máy trừu tượng. Đây là một đặc tả cung cấp môi trường thời gian chạy trong đó java bytecode có thể được thực thi.
JRE là từ viết tắt của Java Runtime Môi trường. Nó được sử dụng để cung cấp môi trường thời gian chạy. Đây là việc triển khai JVM. Nó tồn tại về mặt vật lý. Nó chứa tập hợp các thư viện + các tệp khác mà JVM sử dụng khi chạy
JDK là từ viết tắt của Java Development Kit. Nó tồn tại về mặt vật lý. Nó chứa các công cụ phát triển JRE +
Nếu bạn là một lập trình viên Java, bạn sẽ cần JDK trong hệ thống của mình và gói này cũng sẽ bao gồm JRE và JVM nhưng nếu bạn là người dùng bình thường thích chơi trò chơi trực tuyến thì bạn sẽ chỉ cần JRE và gói này sẽ không có JDK trong đó. .
JVM
JVM (Máy ảo Java) là một máy trừu tượng. Đây là một đặc tả cung cấp môi trường thời gian chạy trong đó java bytecode có thể được thực thi.
JVM có sẵn cho nhiều nền tảng phần cứng và phần mềm. JVM, JRE và JDK phụ thuộc vào nền tảng vì cấu hình của mỗi HĐH khác nhau. Nhưng, Java là nền tảng độc lập.
JRE
Nó chứa mọi thứ bạn cần để chạy các ứng dụng Java ở dạng biên dịch. Bạn không cần bất kỳ thư viện và những thứ khác. Tất cả những thứ bạn cần được biên soạn.
JRE không thể được sử dụng để phát triển, chỉ được sử dụng để chạy các ứng dụng.
Bộ công cụ phát triển Java SE (JDK)
JDK bao gồm các công cụ phát triển dòng lệnh JRE plus như trình biên dịch và trình gỡ lỗi cần thiết hoặc hữu ích để phát triển các ứng dụng và ứng dụng.
(Nguồn: Hỏi & Đáp về GeekForGeek , Tổng quan về Nền tảng Java )
Một sự hiểu biết rõ ràng về các thuật ngữ này (JVM, JDK, JRE) là rất cần thiết để nắm bắt cách sử dụng và sự khác biệt của chúng.
Máy ảo Java JVM (JVM) là một hệ thống thời gian chạy thực thi mã byte Java. JVM giống như một máy tính ảo có thể thực thi một tập hợp các hướng dẫn được biên dịch và thao tác các vị trí bộ nhớ. Khi trình biên dịch Java biên dịch mã nguồn, nó sẽ tạo ra một tập lệnh được tối ưu hóa cao được gọi là mã byte trong tệp. Class. JVM diễn giải các hướng dẫn mã byte này và chuyển đổi chúng thành mã cụ thể của máy để thực thi.
JDK Bộ công cụ phát triển Java (JDK) là một môi trường phát triển phần mềm mà bạn có thể sử dụng để phát triển và thực thi các ứng dụng Java. Nó bao gồm JRE và một bộ công cụ lập trình, chẳng hạn như trình biên dịch Java, trình thông dịch, trình duyệt ứng dụng và trình xem tài liệu. JDK được triển khai thông qua các nền tảng Java SE, Java EE hoặc Java ME.
JRE Môi trường chạy thi hành Java (JRE) là một phần của JDK bao gồm JVM, các lớp lõi và một số thư viện hỗ trợ phát triển ứng dụng. Mặc dù JRE có sẵn như là một phần của JDK, bạn cũng có thể tải xuống và sử dụng nó một cách riêng biệt.
Để hiểu đầy đủ bạn có thể xem Blog của tôi: Jdk Jre Jvm và sự khác biệt
jdk là cần thiết để biên dịch thành mã và chuyển đổi mã java thành mã byte trong khi jre là cần thiết để thực thi mã byte.
JDK bao gồm các công cụ phát triển dòng lệnh JRE plus như trình biên dịch và trình gỡ lỗi cần thiết hoặc hữu ích để phát triển các ứng dụng và ứng dụng.
JRE về cơ bản là Máy ảo Java nơi các chương trình Java của bạn chạy. Nó cũng bao gồm các plugin trình duyệt để thực thi Applet.
JDK là một cỗ máy trừu tượng. Đây là một đặc tả cung cấp môi trường thời gian chạy trong đó java bytecode có thể được thực thi.
Vì vậy, về cơ bản JVM <JRE <JDK theo @Jaimin Patel đã nói.
Sự khác biệt giữa JDK và JRE là JDK là bộ công cụ phát triển phần mềm cho java trong khi JRE là nơi bạn chạy các chương trình của mình.
Giả sử, nếu bạn là một nhà phát triển thì vai trò của bạn là phát triển chương trình cũng như thực hiện chương trình. vì vậy bạn phải có môi trường để phát triển và thực thi, được cung cấp bởi JDK.
Giả sử, nếu bạn là khách hàng thì bạn không phải lo lắng về việc phát triển. Bạn cần là một môi trường để chạy chương trình và chỉ nhận kết quả do JRE cung cấp.
JRE thực thi ứng dụng nhưng JVM đọc từng dòng hướng dẫn để nó thông dịch.
JDK = JRE + Công cụ phát triển
JRE = JVM + Các lớp thư viện
JRE
JRE là từ viết tắt của Java Runtime Môi trường. Nó được sử dụng để cung cấp môi trường thời gian chạy. Đây là việc triển khai JVM. Nó tồn tại về mặt vật lý. Nó chứa tập hợp các thư viện + các tệp khác mà JVM sử dụng trong thời gian chạy.
Việc triển khai các JVM cũng được các công ty khác phát hành tích cực ngoài Sun Micro Systems.
JDK
JDK là từ viết tắt của Java Development Kit. Nó tồn tại về mặt vật lý. Nó chứa các công cụ phát triển JRE +.