# GÓC SÁNG TẠO > Khu vực lập trình > Java >  Chương trình Java được thực thi như thế nào?

## khanhnguyen12021

Trong các bài viết trước, tôi đã cùng các bạn hiểu được rằng các chương trình Java đã được biên dịch rồi thì được lưu trữ dưới dạng các bytecode, các bytecode này chứa trong các file .class. Tuy nhiên, đôi khi bạn còn thấy các bytecode còn được lưu trong các file có đuôi là .jar nữa. Kì thực các file .jar đó chỉ là một tập hợp các file .class được đóng gói lại dưới một cái tên chung và trong một file chung. Nếu bạn muốn tìm hiểu thêm cấu trúc các file .jar thì bạn có thể mở nó trong một chương trình nén như nà Winace chẳng hạn. Tuy nhiên đó không phải là nội dung của bài này.
Hôm nay tôi sẽ cùng các bạn thử tìm hiểu qua về cách thức một chương trình Java chạy. Khi gọi kích đúp chuột vào một file .jar trong một máy tính đã cài đặt tốt môi trường thực thi Java thì cũng đồng nghĩa với việc bạn dùng lệnh java để biên dịch các bytecode có trong các file .class sang mã máy tính nền. Công việc này do Java Virtual Machine đảm nhận. Như đã nói với các bạn, JVM hoạt động hệt như một máy tính thực sự. Nó cũng có các thanh ghi và cơ chế biên dịch của nó cũng giống như một bộ vi xử lý làm việc.

*Đối với các ứng dụng chạy độc lập*
Khi một ứng dụng Java độc lập được yêu cầu chạy thì công việc đầu tiên mà JVM làm là tìm kiếm phương thức main của nó và chạy phương thức đó nếu như nó tìm được các dấu hiệu đúng chứng tỏ sự có mặt của phương thức này. Dấu hiệu đó là:

public static void main(String args[])

args là một mảng của *Strings* và bạn có thể đặt cho nó một cái tên khác tuỳ ý bạn.
Phương thức này khi được yêu cầu thực thi thì nó sẽ vận hành lớp mã chứa trong nó trước sau đó mới gọi các phương thức khác có liên quan đến nó.

*Các Applet*

Trong một applet thì JVM lại đi tìm phương thức init trước. Cách thức nhận biết phương thức này là:
public void init() 
Sau đó nó sẽ tìm đến phương thức start 
public void start()
Tiếp đến là phương thức paint 
public void paint(Graphics g)
Phương thức paint được thực thi bất cứ khi nào mà JVM cần nó để biểu diễn applet đó ra màn hình. Do vậy đây là một phuơng thức được thực thi nhiều lần trong suốt quá trình chạy applet.
Tiếp đó, chúng ta có một số các phương thức khác có liên quan đến việc xử lý các sự kiện. Chúng ta sẽ bàn đến trong một bài khác.
Khi người sử dụng rời khỏi trang có chứa applet đang chạy (ví dụ: chuyển sang trang khác) thì phương thức stop được gọi:

public void stop()
Nếu trình duyệt quay trở lại trang chứa applet, thì phương thức start lại chạy trở lại, sau đó là phương thức paint và các phương thức xử lý sự kiện khác.
Khi mà applet ngừng chạy do trình duyệt bị đóng lại, do người sử dụng chuyển từ trang chứa applet sang trang khác trong một khoảng thời gian tương đối nào đó (đủ để trình duyệt ngừng chạy applet) hoặc do mã của applet ngầm ngừng thực thi nó thì phương thức destroy được gọi ra:
public void destroy()
Trong một bài khác tôi sẽ nói về các phương thức cơ bản của applet, trong đó có  init(), start()..

----------


## tungnc273

này bạn cho mình biết làm sao để tải và chay chương trình java như thế nào

----------


## Nlseo01

có bác nào pro về socket trong java và cách thiết lập 2 socket chat qua lại giữa 2 máy không chỉ tôi với.
tôi học tới đây không biết gì hết
bác nào pro chỉ cụ thể dễ hiểu dùm tôi với

----------

