Quản lý bộ nhớ trong java 8
Cho đến Java 8, metaspace được biết đến như là permgen. Bên cạnh việc là một cái tên hay hơn nhiều, metaspace là một thay đổi quan trọng đối với cách các nhà phát triển tương tác với không gian bộ nhớ của Java. Trước đây, bạn sẽ sử dụng lệnh * java -XX: MaxPermSize* để theo dõi kích thước của không gian permgen. Từ Java 8 trở đi, Java sẽ tự động tăng kích thước của metaspace để đáp ứng nhu cầu meta của chương trình của bạn. Java 8 cũng giới thiệu một cờ mới, MaxMetaspaceSize, có thể được sử dụng để giới hạn kích thước metaspace.
Các tùy chọn bộ nhớ khác, heap và stack, vẫn giữ nguyên trong Java 8.
Cấu hình không gian ngăn xếp(Configuring stack space)
Không gian ngăn xếp là nơi các hàm gọi và tham chiếu biến được xếp hàng. Không gian ngăn xếp là nguồn gốc của lỗi nổi tiếng thứ hai trong lập trình Java: ngoại lệ tràn ngăn xếp (đầu tiên là ngoại lệ con trỏ null). Ngoại lệ tràn ngăn xếp chỉ ra rằng bạn đã hết dung lượng ngăn xếp vì quá nhiều phần đã được bảo lưu. Thông thường, bạn sẽ nhận được một ngăn xếp tràn khi một phương thức hoặc phương thức gọi nhau theo kiểu vòng tròn, do đó dành một số lượng lớn các lệnh gọi hàm ngày càng tăng vào ngăn xếp.
Bạn sử dụng công tắc -Xss để định cấu hình kích thước bắt đầu ngăn xếp. Ngăn xếp sau đó phát triển linh hoạt theo nhu cầu của chương trình.
JDK là gì? Giới thiệu Java Development Kit
JDK là một thành phần nền tảng chính để xây dựng các ứng dụng Java. Trái tim của nó là trình biên dịch Java.
Java Development Kit (JDK) là một trong ba gói công nghệ cốt lõi được sử dụng trong lập trình Java, cùng với JVM (Java Virtual Machine) và JRE (Java Runtime Environment)
JRE có thể được sử dụng như một thành phần độc lập để chạy các chương trình Java, nhưng nó cũng là một phần của JDK. JDK yêu cầu JRE vì chạy các chương trình Java là một phần của việc phát triển chúng.
Các định nghĩa:
- Định nghĩa kỹ thuật: JDK là một triển khai của đặc tả nền tảng Java, bao gồm các trình biên dịch và thư viện lớp.
- Định nghĩa hàng ngày: JDK là gói phần mềm bạn tải xuống để tạo các ứng dụng dựa trên Java.
Nguồn tham khảo: https://www.javaworld.com/article/3272244/what-is-the-jvm-introducing-the-java-virtual-machine.html https://www.javaworld.com/article/3296360/what-is-the-jdk-introduction-to-the-java-development-kit.html https://www.javaworld.com/article/3304858/what-is-the-jre-introduction-to-the-java-runtime-environment.html
All rights reserved
Trong bài này, chúng ta sẽ tìm hiểu về JVM, JRE, JDK. Nó bao gồm những thành phần nào và nhiệm vụ của nó là gì?
JVM (Java Virtual Machine) là tạo ra môi trường máy ảo để thực thi mã java bytecode.
- Máy ảo Java là phần mềm giả lập máy tính, nó tập hợp các lệnh logic để xác định hoạt động của máy.
- Có thể xem nó như là một hệ điều hành thu nhỏ.
- JVM chuyển mã byte code thành machine code tùy theo môi trường tương ứng (gọi là khả năng khả chuyển)
- JVM cung cấp môi trường thực thi cho chương trình Java (gọi đó là khả năng độc lập với nền).
JVM có sẵn trong nhiều phần cứng và nền tảng phần mềm.
JVM gồm 4 nhiệm vụ chính: Load code, Verifies code, Executes code, Provides runtime enviroment.
JRE viết tắt Java Runtime Enviromement. Nó bao gồm các thư viện và các file mà JVM sử dụng lúc thực thi.
JDK viết tắt của Java Development Kit. Nó gồm JRE + công cụ phát triển.
Bộ công cụ JDK gồm các chương trình thực thi đáng chú ý sau:
- javac: Chương trình biên dịch các chương trình nguồn viết bằng ngôn ngữ java ra các tập tin thực thi được trên máy ảo Java.
- java: Một chương trình để dịch mã mà bạn viết thành mã bytecode, khi ứng dụng Java chạy nó dịch mã bytecode thành mã máy tính và thực thi, điều đó có nghĩa là bytecode chỉ là một mã trung gian.Đây là chương trình làm máy ảo của Java, thông dịch mã Bytecode của các chương trình kiểu application thành mã thực thi của máy thực.
- Archive (jar): Là một chương trình nén các file thành một file duy nhất có đuôi jar. Thường dùng để đóng gói các file class.
- Javadoc: Là một công cụ tạo ra tài liệu hướng dẫn sử dụng API.
- appletviewer: Bộ thông dịch, thực thi các chương trình kiểu applet.
- javadoc: Tạo tài liệu về chú thích chương trình nguồn một cách tự động.
- jdb: Trình gở rối.
- rmic: Tạo Stub cho ứng dụng kiểu RMI.
- rmiregistry: Phục vụ danh bạ (Name Server) trong hệ thống RMI
We must understand the differences between JDK, JRE, and JVM before proceeding further to Java. See the brief overview of JVM here. If you want to get the detailed knowledge of Java Virtual Machine, move to the next page. Firstly, let’s see the differences between the JDK, JRE, and JVM. JVM (Java Virtual Machine) is an abstract machine. It is called a virtual machine because it doesn’t physically exist. It is a specification that provides a runtime environment in which Java bytecode can be executed. It can also run those programs which are written in other languages and compiled to Java bytecode. JVMs are available for many hardware and software platforms. JVM, JRE, and JDK are platform dependent because the configuration of each OS is different from each other. However, Java is platform independent. There are three notions of the JVM: specification, implementation, and instance. The JVM performs the following main tasks: JRE is an acronym for Java Runtime Environment. It is also written as Java RTE. The Java Runtime Environment is a set of software tools which are used for developing Java applications. It is used to provide the runtime environment. It is the implementation of JVM. It physically exists. It contains a set of libraries + other files that JVM uses at runtime. The implementation of JVM is also actively released by other companies besides Sun Micro Systems. JDK is an acronym for Java Development Kit. The Java Development Kit (JDK) is a software development environment which is used to develop Java applications and applets. It physically exists. It contains JRE + development tools. JDK is an implementation of any one of the below given Java Platforms released by Oracle Corporation: The JDK contains a private Java Virtual Machine (JVM) and a few other resources such as an interpreter/loader (java), a compiler (javac), an archiver (jar), a documentation generator (Javadoc), etc. to complete the development of a Java Application. More Details. Next TopicJVM: Java Virtual Machine |
Hiểu rõ sự khác nhau giữa JDK, JRE và JVM là điều khá quan trọng trong Java.
Nội dung chính
JVM, JDK, JRE: Có gì khác biệt giữa chúng?
Bài đăng này đã không được cập nhật trong 4 năm
Ba thành phần nền tảng Java không thể thiếu và cách chúng hoạt động cùng nhau trong các ứng dụng Java của bạn
Các nhà phát triển mới sử dụng Java thường tự hỏi có gì khác biệt Java Virtual Machine, Java Development Kit, Java Runtime Environment. Họ cũng tò mò về cách ba thành phần nền tảng Java này hoạt động cùng nhau trong các ứng dụng Java. Cuối cùng, các nhà phát triển cần biết họ sẽ tương tác với từng thành phần như thế nào.
Nói ngắn gọn:
- JVM là thành phần nền tảng Java thực thi các chương trình của bạn.
- JRE khởi tạo JVM và đảm bảo các phụ thuộc có sẵn cho các chương trình của bạn.
- JDK cho phép bạn tạo các chương trình Java có thể được thực thi và chạy bởi JVM và JRE.
Là nhà phát triển, bạn sẽ làm việc với JDK để viết các ứng dụng của mình và với JVM để gỡ lỗi và tối ưu hóa chúng, đặc biệt là về hiệu năng. JRE chủ yếu chạy ở chế độ nền, nhưng bạn có thể sử dụng nó để theo dõi ứng dụng và cấu hình bộ nhớ.
JVM là gi? Giới thiệu Java Virtual Machine
JVM quản lý bộ nhớ hệ thống và cung cấp môi trường thực thi di động cho các ứng dụng dựa trên Java
Các bước cài đặt JDK trên hệ điều hành Windows
Bước 1: Chạy file cài đặt
Bước 2: Tiến hành các thao tác cài đặt JDK
Nhấn Next để bắt đầu cài đặt.
Chọn đường dẫn JDK, mặc định là: “C:\Program Files\Java\jdk1.8.0_51\”
Chọn đường dẫn JRE, mặc định là: “C:\Program Files\Java\jre1.8.0_51\”
Quá trình cài đặt đang diễn ra, sau đó nhấn Finish để hoàn tất quá trình cài đặt.
Bước 3: Hoàn tất quá trình cài đặt
Sau khi cài đặt, chúng ta sẽ thấy thư mục đã cài đặt của JDK và JRE.
Cấu hình biến môi trường cho Java
Để có thể sử dụng các trình biên dịch và thông dịch Java trong hệ điều hành Windows, cần cấu hình biến môi trường cho Java trong Windows. Vào Control Panel, tìm mục Advanced system settings, chọn Environment Variables.
Nhấn New để tạo mới một biến môi trường có tên “JAVA_HOME”.
Thêm “%JAVA_HOME%\bin;” vào Variable value của biến Path.
Kiểm tra cấu hình biến môi trường thành công
Vào giao diện Command Prompt, gõ lệnh
java -version
, kết quả trả về cho thấy version đã cài đặt của Java là thành công.
JVM là gì?
JVM ( Java Virtual Machine- Máy ảo Java) là một máy ảo cho phép máy tính chạy chương trình Java.
Khi bạn chạy chương trình Java, trước tiên trình biên dịch Java sẽ biên dịch Java code thành bytecode. Sau đó, JVM dịch bytecode thành ngôn ngữ máy (tập hợp các câu lệnh mà CPU của máy tính trực tiếp thực hiện).
Java là một ngôn ngữ độc lập nền tảng. Bởi vì khi bạn viết Java code, code thật ra được viết cho JVM chứ không phải cho thiết bị vật lý (máy tính). Do JVM thực hiện Java bytecode độc lập với nền tảng, Java là ngôn ngữ độc lập với nền tảng nó đang chạy.
Nếu bạn muốn tìm hiểu về Cấu trúc JVM, hãy truy cập Giải thích về Cấu trúc JVM .
Xem thêm[sửa | sửa mã nguồn]
- Phát triển phần mềm Android – Các khái niệm và tiện ích phát triển phần mềm khác nhau được sử dụng để tạo các ứng dụng Android
- Lịch sử phiên bản Android – lịch sử và mô tả về các bản phát hành Android, được liệt kê chủ yếu theo các cấp API chính thức của chúng
- So sánh phần mềm ảo hóa ứng dụng – máy ảo và ngôn ngữ kịch bản khác nhau
- Máy ảo – mô phỏng một hệ thống máy tính cụ thể, với các mức độ khác nhau của chức năng được triển khai
JDK là gì?
JDK (Java Development Kit- Bộ công cụ phát triển Java) là một bộ công cụ phát triển phần mềm để phát triển các ứng dụng trong Java. Khi bạn tải JDK, JRE cũng được tải xuống và không cần phải tải xuống riêng. Ngoài JRE, JDK cũng chứa một lượng công cụ phát triển (trình biên dịch, JavaDoc, Trình gỡ lỗi Java, v.v.).
Nếu bạn muốn phát triển các ứng dụng Java, hãy tải JDK .
Sau đây là mối quan hệ giữa JVM, JRE và JDK giúp bạn hình dung mọi thứ dễ hơn:
Tham khảo[sửa | sửa mã nguồn]
- Clarifications and Amendments to the Java Virtual Machine Specification, Second Edition includes list of changes to be made to support J2SE 5.0 and JSR 45
- JSR 45, specifies changes to the class file format to support source-level debugging of languages such as JavaServer Pages (JSP) and SQLJ that are translated to Java
Tham khảo[sửa | sửa mã nguồn]
- ^ a b c Andrei Frumusanu (ngày 1 tháng 7 năm 2014). “A Closer Look at Android RunTime (ART) in Android L”. AnandTech. Truy cập ngày 5 tháng 7 năm 2014.
- ^ Ben Cheng; Bill Buzbee (tháng 5 năm 2010). “A JIT Compiler for Android’s Dalvik VM” (PDF). android-app-developer.co.uk. Google. tr. 5–14. Bản gốc (PDF) lưu trữ ngày 6 tháng 11 năm 2015. Truy cập ngày 18 tháng 3 năm 2015.
- ^ Phil Nickinson (ngày 26 tháng 5 năm 2010). “Google Android developer explains more about Dalvik and the JIT in Froyo”. androidcentral.com. Bản gốc lưu trữ ngày 8 tháng 4 năm 2017. Truy cập ngày 8 tháng 7 năm 2014.
- ^ a b “Android Developers: ART and Dalvik”. source.android.com. ngày 9 tháng 3 năm 2015. Truy cập ngày 18 tháng 3 năm 2015.
- ^ a b “Android Developers: Configuring ART – How ART works”. source.android.com. ngày 9 tháng 3 năm 2015. Truy cập ngày 18 tháng 3 năm 2015.
- ^ Sean Buckley (ngày 6 tháng 11 năm 2013). “’ART’ experiment in Android KitKat improves battery life and speeds up apps”. Engadget. Truy cập ngày 5 tháng 7 năm 2014.
- ^ Daniel P. (ngày 7 tháng 11 năm 2013). “Experimental Google ART runtime in Android KitKat can bring twice faster app executions”. phonearena.com. Truy cập ngày 5 tháng 7 năm 2014.
- ^ “Implementing ART Just-In-Time (JIT) Compiler”. source.android.com. ngày 22 tháng 1 năm 2017. Truy cập ngày 22 tháng 1 năm 2017.
JRE (Java Runtime Environment)
JRE (Java Runtime Environment) là môi trường thực thi Java bao gồm JVM, các thư viện và những thành phần bổ sung để chạy những ứng dụng được viết bằng Java.
JRE (Java Runtime Environment) bản chất là một gói phần mềm bao gồm cả JVM. Nếu chỉ cần chạy chương trình Java mà không cần thêm công cụ phát triển, chúng ta chỉ cần JRE là đủ. Chúng ta có thể download JRE từ website Java SE Runtime Environment của Oracle.
Quản lí bộ nhớ trong JVM
Tương tác phổ biến nhất với JVM đang chạy là kiểm tra mức sử dụng bộ nhớ trong heap và stack. Điều chỉnh phổ biến nhất là điều chỉnh các cài đặt bộ nhớ của JVM.
Thu gom rác(Garbage collection)
Trước Java, tất cả bộ nhớ chương trình được quản lý bởi lập trình viên. Trong Java, bộ nhớ chương trình được quản lý bởi JVM. JVM quản lý bộ nhớ thông qua một quá trình gọi là bộ sưu tập rác(garbage collection), liên tục xác định và loại bỏ bộ nhớ không sử dụng trong các chương trình Java. Việc thu gom rác xảy ra bên trong một JVM đang chạy.
JRE là gì?
JRE ( Java Runtime Environment) là gói phần mềm cung cấp các thư viện lớp Java, cùng với Máy ảo Java (JVM), và các thành phần khác để chạy các ứng dụng được viết bằng lập trình Java. JRE là một bộ của JVM.
Nếu bạn cần chạy các chương trình Java, nhưng không phát triển chúng, JRE là thứ bạn cần. Bạn có thể tải JRE từ trang Tải Java SE Runtime Environment 8 .
Liên kết ngoài[sửa | sửa mã nguồn]
- What is Java virtual machine (JVM)?
- The Java Virtual Machine Specification
- How to download and install prebuilt OpenJDK packages
- How to Install Java? (JRE from Oracle)
Android Runtime
Phát triển bởi | |
Kho mã nguồn | android |
Viết bằng | C, C++ |
Hệ điều hành | Android |
Website | source |
Android Runtime (ART) là môi trường thời gian chạy ứng dụng được sử dụng bởi hệ điều hành Android. Thay thế Dalvik, máy ảo quy trình ban đầu được hệ điều hành Android sử dụng, ART thực hiện dịch mã byte của ứng dụng thành các hướng dẫn gốc được thực hiện sau đó bởi môi trường thời gian chạy của thiết bị.[1]
Android 2.2 “Froyo” đã đưa quá trình biên dịch theo thời gian (JIT) dựa trên dấu vết đưa vào Dalvik, tối ưu hóa việc thực thi các ứng dụng bằng cách liên tục cấu hình các ứng dụng mỗi khi chúng chạy và tự động biên dịch các đoạn ngắn của mã byte của chúng thành mã máy gốc. Trong khi Dalvik diễn giải phần còn lại của mã byte của ứng dụng, thì việc thực thi riêng các đoạn mã byte ngắn đó, được gọi là “dấu vết”, cung cấp các cải tiến hiệu suất đáng kể.[2][3]
Không giống như Dalvik, ART giới thiệu việc sử dụng biên dịch trước (AOT) bằng cách biên dịch toàn bộ ứng dụng thành mã máy gốc khi cài đặt. Bằng cách loại bỏ giải thích và biên dịch JIT dựa trên dấu vết của Dalvik, ART cải thiện hiệu quả thực thi chung và giảm mức tiêu thụ điện năng, giúp cải thiện tính tự chủ của pin trên thiết bị di động. Đồng thời, ART mang đến khả năng thực thi ứng dụng nhanh hơn, cơ chế phân bổ bộ nhớ và thu gom rác (GC) được cải thiện, các tính năng gỡ lỗi ứng dụng mới và cấu hình ứng dụng cấp cao có độ chính xác hơn.[1][4][5]
Để duy trì khả năng tương thích ngược, ART sử dụng cùng mã byte đầu vào như Dalvik, được cung cấp thông qua các tệp .dex tiêu chuẩn như một phần của tệp APK, trong khi các tệp .odex được thay thế bằng các tệp thực thi Định dạng có thể thực thi và có thể liên kết (ELF). Khi một ứng dụng được biên dịch bằng cách sử dụng trên thiết bị tiện ích của ART dex2oat, nó chỉ được chạy từ tệp thực thi ELF đã biên dịch; do đó, ART loại bỏ các chi phí thực thi ứng dụng khác nhau liên quan đến việc giải thích và biên dịch JIT dựa trên dấu vết của Dalvik. Mặt khác, ART yêu cầu thêm thời gian để biên dịch khi cài đặt ứng dụng và các ứng dụng chiếm dung lượng lưu trữ thứ cấp lớn hơn một chút (thường là bộ nhớ flash) để lưu mã được biên dịch.[1][4][5]
Android 4.4 “KitKat” đã mang đến bản xem trước công nghệ của ART, bao gồm nó như một môi trường thời gian chạy thay thế và giữ Dalvik làm máy ảo mặc định.[6][7] Trong phiên bản Android lớn tiếp theo, Android 5.0 “Lollipop”, Dalvik đã được thay thế hoàn toàn bằng ART.
Android 7.0 “Nougat” đã giới thiệu trình biên dịch JIT với cấu hình mã cho ART, cho phép nó liên tục cải thiện hiệu suất của các ứng dụng Android khi chúng chạy. Trình biên dịch JIT bổ sung cho trình biên dịch Ahead of Time hiện tại của ART và giúp cải thiện hiệu năng thời gian chạy.[8]
Liên kết ngoài[sửa | sửa mã nguồn]
- Trang web chính thức
- Basics 101: Understanding ART, the Android Runtime Video trên YouTube, Nhà phát triển XDA, ngày 12 tháng 2 năm 2014
- Android’s Runtime Evolved Video trên YouTube, Google I / O 2014, bởi Anwar Ghuloum, Brian Carlstrom và Ian Rogers
- JIT Compiler for Android’s Dalvik VM Video trên YouTube, Google I / O 2010, bởi Ben Cheng và Bill Buzbee
- Cung cấp Thời gian chạy Android được tối ưu hóa cao (ART) và Thời gian chạy web trên Kiến trúc Intel, Intel, ngày 4 tháng 8 năm 2015, bởi Haitao Feng và Jonathan Đinh
- Android 7.1 dành cho nhà phát triển: Trình biên dịch JIT / AOT hướng dẫn hồ sơ, Nhà phát triển Android, mô tả các thay đổi ART trong Android 7.1
- Tối ưu hóa Android Lưu trữ 2019-04-12 tại Wayback Machine để có hiệu suất tốt hơn, hãy tham khảo bởi Nhà phát triển Android.
Đăng nhập/Đăng ký
Danh sách bài
Giới thiệu về Java
Hello World
JDK, JRE & JVM
Làm quen với Java
Biến & hằng
Toán tử
Biểu thức & câu lệnh
Kiểu dữ liệu
Chuỗi ký tự
Nhập xuất
Chú thích
Luồng điều khiển trong Java
Switch
If…else
Đệ quy
Hướng đối tượng trong Java
Lớp & đối tượng
Chỉ định truy cập
Phương thức
Hàm tạo
Nạp chồng
Kế thừa
Instanceof
Final
Con trỏ this
Ghi đè
Từ khóa super
Tính trừu tượng
Interface
Lớp Singleton
Enum
Reflection
Đa hình
Đóng gói
Lớp lồng nhau
Lớp ẩn danh
Xử lý ngoại lệ trong Java
Ngoại lệ
Try Catch
Xử lý nhiều ngoại lệ
Try-with-resources
Annotation
Các kiểu Annotation
Throw & Throws
Ghi log
Assertion
Các lớp nâng cao trong Java
Collection Interface
Arraylist
Queue Interface
PriorityQueue
Deque Interface
LinkedList
ArrayDeque
BlockingQueue Interface
ArrayBlockingQueue
LinkedBlockingQueue
Map Interface
Hashmap
LinkedHashmap
Stack
Vector
Framework Collection
WeakHashMap
EnumMap
SortedMap Interface
NavigableMap Interface
TreeMap
ConcurrentMap Interface
ConcurrentHashMap
Set Interface
Hashset
EnumSet
LinkedHashSet
NavigableSet Interface
SortedSet Interface
TreeSet
Phương thức có sẵn
Iterator Interface
ListIterator Interface
Luồng nhập xuất trong Java (Đọc file và ghi file)
Luồng nhập xuất
InputStream
OutputStream
FileInputStream
FileOutputStream
ByteArrayInputStream
ByteArrayOutputStream
ObjectInputStream
ObjectOutputStream
BufferedInputStream
BufferedOutputStream
PrintStream
Reader & Writer
InputStreamReader & OutputStreamWriter
FileReader & FileWriter
BufferedReader & BufferedWriter
StringReader & StringWriter
PrintWriter
Scanner
Kiến thức bổ sung
Ép kiểu
Autoboxing & Unboxing
Biểu thức Lambda
Tính tổng quát
File
Wrapper
Tham số trên CommandLine
Tutorial
Java Tutorial
Trang trước
Trang tiếp theo
Bạn cần
đăng nhập
để bình luận bài viết này
Chưa có bình luận nào, hãy là người đầu tiên bình luận
Chia sẻ kiến thức – Kết nối tương lai
Về chúng tôi
Về chúng tôi
Giới thiệu
Chính sách bảo mật
Điều khoản dịch vụ
Học miễn phí
Học miễn phí
Khóa học
Luyện tập
Cộng đồng
Cộng đồng
Kiến thức
Tin tức
Hỏi đáp
CÔNG TY CỔ PHẦN CÔNG NGHỆ GIÁO DỤC VÀ DỊCH VỤ BRONTOBYTE
The Manor Central Park, đường Nguyễn Xiển, phường Đại Kim, quận Hoàng Mai, TP. Hà Nội
THÔNG TIN LIÊN HỆ
[email protected]
©2024 TEK4.VN
Copyright © 2024
TEK4.VN
Bạn sẽ tìm hiểu sự khác biệt chính giữa JDK, JRE và JVM trong bài viết này.
Nội dung chính
JVM (Java Virtual Machine)
JVM (Java Virtual Machine) là máy ảo dùng để chạy chương trình Java. Khi chạy chương trình Java, trình biên dịch Java sẽ biên dịch Java code thành bytecode. Sau đó, JVM sẽ thông dịch bytecode thành mã máy để CPU thực thi.
Các JVM nổi tiếng được Oracle phát hành là Java HotSpot Performance Engine, Jrockit. Trong đó, Java HotSpot là một JVM dành cho máy tính để bàn và máy chủ được sử dụng phổ biến nhất hiện nay.
Tải và thực thi class files trong JVM
Java class loader trong JVM
Mọi thứ trong java là một lớp(class), và tất cả các ứng dụng Java được xây dựng từ các lớp(classes). Một ứng dụng có thể bao gồm một lớp hoặc hàng ngàn lớp. Để chạy một ứng dụng Java, JVM phải tải các tệp .class đã biên dịch vào context, chẳng hạn như một máy chủ, nơi chúng có thể được truy cập. Một JVM phụ thuộc vào trình tải lớp của nó để thực hiện chức năng này.
Trình tải lớp Java là một phần của JVM tải các lớp vào bộ nhớ và làm cho chúng có sẵn để thực thi. Trình nạp lớp sử dụng các kỹ thuật như lazy-loading và caching để làm cho việc tải lớp hiệu quả nhất có thể.
Công cụ thực thi trong JVM(The execution engine in the JVM)
Khi trình tải lớp đã hoàn thành công việc tải các lớp, JVM bắt đầu thực thi mã trong mỗi lớp. Công cụ thực thi là thành phần JVM xử lý chức năng này. Công cụ thực thi là điều cần thiết cho JVM đang chạy. Mã thực thi liên quan đến việc quản lý truy cập vào tài nguyên hệ thống. Công cụ thực thi JVM nằm giữa chương trình đang chạy – với nhu cầu về tài nguyên tệp, mạng và bộ nhớ – và hệ điều hành, cung cấp các tài nguyên đó.
Cách công cụ thực thi quản lý tài nguyên hệ thống
Tài nguyên hệ thống có thể được chia thành hai loại lớn: bộ nhớ và mọi thứ khác.
Hãy nhớ lại rằng JVM chịu trách nhiệm xử lý bộ nhớ không sử dụng và bộ sưu tập rác(garbage collection) là cơ chế thực hiện việc xử lý đó. JVM cũng chịu trách nhiệm phân bổ và duy trì cấu trúc tham chiếu mà nhà phát triển được cấp. Ví dụ, công cụ thực thi của JVM chịu trách nhiệm lấy một cái gì đó giống như từ khóa new trong Java và biến nó thành một yêu cầu dành riêng cho hệ điều hành để cấp phát bộ nhớ.
Ngoài bộ nhớ, công cụ thực thi quản lý tài nguyên để truy cập hệ thống tệp và network I/O . Do JVM có thể tương tác trên các hệ điều hành, nên đây không phải là nhiệm vụ . Ngoài nhu cầu tài nguyên của từng ứng dụng, công cụ thực thi phải đáp ứng với từng môi trường HĐH.
JRE là gì? Giới thiệu Java Runtime Environment
JRE tạo JVM và đảm bảo các phụ thuộc có sẵn cho các chương trình Java của bạn.
Thực tế mà nói, runtime enviroment là một phần mềm được thiết kế để chạy các phần mềm khác. Là runtime enviroment cho Java, JRE chứa các thư viện lớp Java, trình tải lớp Java và Máy ảo Java. Trong hệ thống này:
- Trình tải lớp chịu trách nhiệm tải chính xác các lớp và kết nối chúng với các thư viện lớp Java cốt lõi.
- JVM chịu trách nhiệm đảm bảo các ứng dụng Java có tài nguyên mà chúng cần để chạy và hoạt động tốt trong thiết bị hoặc môi trường đám mây của bạn.
- JRE chủ yếu là một thùng chứa cho các thành phần khác và chịu trách nhiệm điều phối các hoạt động của chúng.
Cấu hình không gian heap(Configuring heap space)
Không gian heap là phần động nhất của hệ thống bộ nhớ Java. Bạn có thể sử dụng các cờ -Xms và -Xmx để cho Java biết mức độ lớn để bắt đầu heap và mức độ lớn để cho phép nó trở thành. Hiểu cách điều chỉnh các cờ này cho các nhu cầu chương trình cụ thể là một khía cạnh quan trọng của quản lý bộ nhớ trong Java. Ý tưởng là làm cho heap đủ lớn để garbage collection hoạt động hiệu quả nhất. Đó là, bạn muốn cho phép đủ bộ nhớ để cho chương trình chạy, nhưng bạn không muốn nó lớn hơn mức cần thiết.
Bộ nhớ Java và JRE
Bộ nhớ Java bao gồm ba thành phần: heap, stack và metaspace (trước đây được gọi là permgen).
- Metaspace là nơi Java giữ thông tin không thay đổi của chương trình như các định nghĩa lớp.
- Không gian heap (Heap space) là nơi Java giữ nội dung biến(variable content).
- Không gian ngăn xếp (Stack space) là nơi Java lưu trữ thực thi hàm(function execution) và tham chiếu biến(variable references).
Tìm hiểu JVM
JVM (viết tắt của Java Virtual Machine) là một thiết bị trừu tượng (ảo) có thể giúp máy tính chạy các chương trình Java. Nó cung cấp môi trường runtime mà trong đó Java Bytecode có thể được thực thi.
JVM là có sẵn cho nhiều nền tảng (Windows, Linux…). JVM, JRE và JDK là phụ thuộc nền tảng, bởi vì cấu hình của mỗi OS (hệ điều hành) là khác nhau. Nhưng, Java là độc lập nền tảng.
Các nhiệm vụ chính của JVM
- Tải code
- Kiểm tra code
- Thực thi code
- Cung cấp môi trường runtime
Cấu trúc của JVM
Trong đó:
- Classloader: Là một hệ thống con của JVM được sử dụng để tải class file.
- Class (method) Area: Lưu trữ cấu trúc mỗi lớp, chẳng hạn như hằng, trường, dữ liệu phương thức, code của phương thức, …
- Heap: Nó là khu vực dữ liệu runtime mà trong đó đối tượng được cấp phát.
-
Stack: Stack trong Java lưu giữ các Frame. Nó giữ các biến cục bộ và các kết quả cục bộ, và thực hiện một phần nhiệm vụ trong phần triệu hồi và trả về phương thức. Mỗi Thread có một Stack riêng, được tạo tại cùng thời điểm với Thread.
Một Frame mới được tạo mỗi khi một phương thức được triệu hồi và bị hủy khi lời triệu hồi phương thức là kết thúc. - Program Counter Register: Nó chứa địa chỉ của chỉ lệnh JVM hiện tại đang được thực thi.
- Native Method Stack: Bao gồm tất cả các phương thức tự nhiện được sử dụng trong ứng dụng.
-
Execution Engine: Phần này bao gồm:
Một bộ xử lý ảo Virtual ProcessorMột trình thông dịch Interpreter. Đọc Bytecode Stream sau đó thực thi các chỉ thị. - Just-In-Time (JIT) Compiler: được sử dụng để cải thiện hiệu suất. JIT biên dịch các phần của Bytecode mà có cùng tính năng tại cùng một thời điểm, và vì thế giảm lượng thời gian cần thiết để biên dịch. Ở đây khái niệm Compiler là một bộ biên dịch tập chỉ thị của JVM thành tập chỉ thị của một CPU cụ thể.
JDK (Java Development Kit)
JDK (Java Development Kit) là bộ công cụ phát triển phần mềm Java. JDK (Java Development Kit) bao gồm JRE và những công cụ cần thiết để phát triển ứng dụng bằng ngôn ngữ Java. Khi download JDK thì JRE cũng được tích hợp trong JDK.
Các bạn có thể download JDK từ website Java SE Development Kit của Oracle.
Ngoài JRE, JDK bao gồm các công cụ phát triển Java:
-
- JAVAC: Chương trình dịch chuyển mã nguồn sang ByteCode;
- JAVA: Bộ thông dịch, thực thi Java Application;
- APPLETVIEWER: Bộ thông dịch, thực thi Java Applet;
- JAVADOC: Bộ tạo tài liệu dạng HTML từ mã nguồn và chú thích;
- JDB: Bộ gỡ lỗi (Java Debugger);
- JAVAP: Trình dịch ngược bytecode;
- JAR: Dùng để đóng gói lưu trữ các module viết bằng Java (tạo ra file đuôi *.jar), là phương pháp tiện lợi để phân phối những chương trình Java.
Mối quan hệ giữa JVM, JRE và JDK
Các phiên bản của JDK (Java Devenlopment Kit)
-
- JDK 1.02 (1995);
- JDK 1.1 (1996);
- JDK 1.2 (1998);
- JDK 1.3 (2000);
- JDK 1.4 (2002);
- JDK 1.5 (2004) (JDK 5 hoặc Java 5);
- JDK 1.6 (2006) (JDK 6 hoặc Java 6);
- JDK 1.7 (2011) (JDK 7 hoặc Java 7);
- JDK 1.8 (2014) (JDK 8 hoặc Java 8);
- Đến 2021, đã có JDK 17.
JDK còn có các bộ công cụ phát triển khác nhau cho các loại ứng dụng:
-
- Desktop applications – J2SE: viết các ứng dụng trên Desktop
- Server applications – J2EE: viết các ứng dụng chạy trên máy chủ website
- Mobile (embedded) applications – J2ME: viết các ứng dụng trên thiết bị di động, không dây, thiết bị nhúng,…
Tìm hiểu JDK
JDK (là viết tắt của Java Development Kit) bao gồm JRE và các Development Tool.
Java Development Kit (JDK) is a software development environment used for developing Java applications and applets. It includes the Java Runtime Environment (JRE), an interpreter/loader (Java), a compiler (javac), an archiver (jar), a documentation generator (Javadoc), and other tools needed in Java development.
Now we need an environment to make a run of our program. Henceforth, JRE stands for “Java Runtime Environment” and may also be written as “Java RTE.” The Java Runtime Environment provides the minimum requirements for executing a Java application; it consists of the Java Virtual Machine (JVM), core classes, and supporting files.
Now let us discuss JVM, which stands out for java virtual machines. It is as follows:
- A specification where the working of Java Virtual Machine is specified. But implementation provider is independent to choose the algorithm. Its implementation has been provided by Sun and other companies.
- An implementation is a computer program that meets the requirements of the JVM specification.
- Runtime Instance Whenever you write a java command on the command prompt to run the java class, an instance of JVM is created.
Before proceeding to the differences between JDK, JRE, and JVM, let us discuss them in brief first and interrelate them with the image below proposed.
Don’t get confused as we are going to discuss all of them one by one.
1. JDK (Java Development Kit) is a Kit that provides the environment to develop and execute(run) the Java program. JDK is a kit(or package) that includes two things
- Development Tools(to provide an environment to develop your java programs)
- JRE (to execute your java program).
2. JRE (Java Runtime Environment) is an installation package that provides an environment to only run(not develop) the java program(or application)onto your machine. JRE is only used by those who only want to run Java programs that are end-users of your system.
3. JVM (Java Virtual Machine) is a very important part of both JDK and JRE because it is contained or inbuilt in both. Whatever Java program you run using JRE or JDK goes into JVM and JVM is responsible for executing the java program line by line, hence it is also known as an interpreter.
Now let us discuss the components of JRE in order to understand its importance of it and perceive how it actually works. For this let us discuss components.
The components of JRE are as follows:
- Deployment technologies, including deployment, Java Web Start, and Java Plug-in.
- User interface toolkits, including Abstract Window Toolkit (AWT), Swing, Java 2D, Accessibility, Image I/O, Print Service, Sound, drag, and drop (DnD), and input methods.
- Integration libraries, including Interface Definition Language (IDL), Java Database Connectivity (JDBC), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Remote Method Invocation Over Internet Inter-Orb Protocol (RMI-IIOP), and scripting.
- Other base libraries, including international support, input/output (I/O), extension mechanism, Beans, Java Management Extensions (JMX), Java Native Interface (JNI), Math, Networking, Override Mechanism, Security, Serialization, and Java for XML Processing (XML JAXP).
- Lang and util base libraries, including lang and util, management, versioning, zip, instrument, reflection, Collections, Concurrency Utilities, Java Archive (JAR), Logging, Preferences API, Ref Objects, and Regular Expressions.
- Java Virtual Machine (JVM), including Java HotSpot Client and Server Virtual Machines.
After having an adequate understanding of the components, now let us discuss the working of JDK. In order to understand how JDK works, let us consider an illustration below as follows:
Illustration:
Consider a java source file saved as ‘Example.java’. The file is compiled into a set of Byte Code that is stored in a “.class” file. Here it will be “Example.class“.
Note: From above, media operation computing during the compile time can be interpreted.The following actions occur at runtime as listed below:
- Class Loader
- Byte Code Verifier
- Interpreter
- Execute the Byte Code
- Make appropriate calls to the underlying hardware
Now let us discuss in brief how JVM works out. It is as follows:
JVM becomes an instance of JRE at the runtime of a Java program. It is widely known as a runtime interpreter.JVM largely helps in the abstraction of inner implementation from the programmers who make use of libraries for their programs from JDK.
It is mainly responsible for three activities.
- Loading
- Linking
- Initialization
Similarly, now let us discuss the working of JRE which is as follows:
- JVM(Java Virtual Machine) acts as a run-time engine to run Java applications. JVM is the one that actually calls the main method present in a java code. JVM is a part of JRE(Java Runtime Environment).
- Java applications are called WORA (Write Once Run Anywhere). This means a programmer can develop Java code on one system and can expect it to run on any other Java-enabled system without any adjustments. This is all possible because of JVM.
- When we compile a .java file, .class files(contains byte-code) with the same class names present in .java file are generated by the Java compiler. This .class file goes into various steps when we run it. These steps together describe the whole JVM.
Feeling lost in the vast world of Backend Development? It’s time for a change! Join our Java Backend Development – Live Course and embark on an exciting journey to master backend development efficiently and on schedule. What We Offer:
- Comprehensive Course
- Expert Guidance for Efficient Learning
- Hands-on Experience with Real-world Projects
- Proven Track Record with 100,000+ Successful Geeks
Last Updated :
03 Oct, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment…
Máy ảo Java
Nhà thiết kế | Sun Microsystems |
Bits | 32-bit |
Ra mắt | 1994 |
Loại | Ngăn xếp và register–register |
Endianness | Lớn |
Thanh ghi | |
General purpose | Ngăn xếp toán hạng cho mỗi phương thức (tối đa 65535 toán hạng) cộng với các biến cục bộ cho mỗi phương thức (tối đa 65535) |
Máy ảo Java, tiếng Anh là Java virtual machine (viết tắt: JVM) là một máy ảo cho phép chạy các chương trình Java cũng như các chương trình khác được viết bằng các ngôn ngữ khác mà được biên dịch sang mã byte Java. JVM được mô tả chi tiết bởi một đặc tả mô tả chính thức những gì cần cho một hiện thực JVM. Đặc tả đó để bảo đảm khả năng tương tác của các chương trình Java trên những hiện thực khác nhau để tác giả các chương trình đó có thể sử dụng Bộ công phụ Phát triển Java (JDK) mà không cần phải lo lắng về đặc tính của nền tảng phần cứng bên dưới.
Hiện thực tham khảo JVM được phát triển bởi dự án OpenJDK dưới dạng mã nguồn mở và bao gồm một trình biên dịch JIT có tên là HotSpot. Các bản phát hành Java hỗ trợ thương mại cũng có sẵn từ Oracle Corporation dựa trên OpenJDK.
Runtime Enviroment là gì?
Một chương trình phần mềm cần phải thực thi và để thực hiện nó cần một môi trường để chạy. Runtime Enviroment tải các tệp lớp và đảm bảo có quyền truy cập vào bộ nhớ và các tài nguyên hệ thống khác để chạy chúng. Trước đây, hầu hết các phần mềm đều sử dụng hệ điều hành (HĐH) làm Runtime Enviroment. Chương trình chạy bên trong bất kỳ máy tính nào được bật, nhưng dựa vào cài đặt hệ điều hành để truy cập tài nguyên. Tài nguyên trong trường hợp này sẽ là những thứ như bộ nhớ và tệp chương trình và dependencies. Java Runtime Enviroment đã thay đổi tất cả, ít nhất là đối với các chương trình Java.
JRE chứa các thư viện và phần mềm mà các chương trình Java của bạn cần chạy. Ví dụ, trình tải lớp Java là một phần của Java Runtime Environment. Phần mềm quan trọng này tải mã Java được biên dịch vào bộ nhớ và kết nối mã với các thư viện lớp Java thích hợp.
Keywords searched by users: jdk jvm and jre
Categories: Phổ biến 100 Jdk Jvm And Jre
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/