14/03/18

Lịch sử phát triển

Năm 1990, Sun MicroSystems thực hiện dự án Green nhằm phát triển phần mềm trong các thiết bị dân dụng. James Gosling, chuyên gia lập trình đã tạo ra một ngôn ngữ lập trình mới có tên là Oak. Ngôn ngữ này có cú pháp gần giống như C++ nhưng bỏ qua các tính năng nguy hiểm của C++ như truy cập trực tiếp tài nguyên hệ thống, con trỏ, định nghĩa chồng các tác tử…

Khi ngôn ngữ Oak trưởng thành, WWW cũng đang vào thời kỳ phát triển mạnh mẽ, Sun cho rằng đây là một ngôn ngữ thích hợp cho Internet. Năm 1995, Oak đổi tên thành Java và sau đó đến 1996  Java đã được xem như một chuẩn công nghiệp cho Internet.

Khả năng của ngôn ngữ Java  

  • Là một ngôn ngữ bậc cao như C, C++, Perl, SmallTalk,.. cho nên có thể được dùng để tạo ra các ứng dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác.
  • Có các môi trường lập trình đồ họa như  Visual Java, Symantec Cafe, Jbuilder, Jcreator, ...
  • Có khả năng truy cập dữ liệu từ xa thông qua cầu nối JDBC (Java DataBase Connectivity)
  • Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket) cũng như truy xuất Web.
  • Hỗ trợ lập trình phân tán  (Remote Method Invocation ) cho phép một ứng dụng có thể được xử lý phân tán trên các máy tính khác nhau.
  • Và luôn được bổ sung các tính năng cao cấp khác trong các phiên bản sau.

Những đặc điểm của ngôn ngữ Java 

  • Ngôn ngữ hoàn toàn hướng đối tượng.
  • Ngôn ngữ đa nền cho phép một chương trình có thể thực thi trên các hệ điều hành khác nhau (MS Windows, UNIX, Linux) mà không phải biên dịch lại chương trình. Phương châm của java là "Viết một lần ,  Chạy trên nhiều nền"  (Write Once, Run Anywhere).
  • Ngôn ngữ đa luồng, cho phép trong một chương trình có thể có nhiều luồng điều khiển được thực thi song song nhau, rất hữu ích cho các xử lý song song.
  • Ngôn ngữ phân tán, cho phép các đối tượng của một ứng dụng được phân bố và thực thi trên các máy tính khác nhau.
  • Ngôn ngữ động, cho phép mã lệnh của một chương trình được tải từ một máy tính về máy của người yêu cầu thực thi chương trình.
  • Ngôn ngữ an toàn, tất cả các thao tác truy xuất vào các thiết bị vào ra đều thực hiện trên máy ảo nhờ đó hạn chế các thao tác nguy hiểm cho máy tính thật.
  • Ngôn ngữ đơn giản, dễ học, kiến trúc chương trình đơn giản, trong sáng.

Máy ảo Java (JMV - Java Virtual Machine)

Để đảm bảo tính đa nền, Java sử dụng cơ chế Máy ảo của Java. ByteCode đó là ngôn ngữ máy của Máy ảo Java tương tự như các lệnh nhị phân của các máy tính thực. Một chương trình sau khi được viết bằng ngôn ngữ Java (có phần mở rộng là .java) phải được biên dịch thành tập tin thực thi được trên máy ảo Java (có phần mở rộng là .class).  Tập tin thực thi này chứa các chỉ thị dưới dạng mã Bytecode mà máy ảo Java hiểu được phải làm gì. 

Khi thực hiện một chương trình, máy ảo Java lần lượt thông dịch các chỉ thị dưới dạng Bytecode thành các chỉ thị dạng nhị phân của máy tính thực và thực thi thực sự chúng trên máy tính thực.

Máy ảo thực tế đó là một chương trình thông dịch. Vì thế các hệ điều hành khác nhau sẽ có các máy ảo khác nhau. Để thực thi một ứng dụng của Java trên một hệ điều hành cụ thể, cần phải cài đặt máy ảo tương ứng cho hệ điều hành đó.

Hai kiểu ứng dụng dưới ngôn ngữ java

Khi bắt đầu thiết kế một ứng dụng dưới ngôn ngữ Java, bạn phải chọn kiểu cho nó là Application hay Applet.

  • Applet: Là một chương trình ứng dụng được nhúng vào các trang web. Mã của chương trình được tải về máy người dùng từ Web server khi người dùng truy xuất đến trang web chứa nó.
  • Application: Là một chương trình ứng dụng được thực thi trực tiếp trên các máy ảo của Java.

Bộ phát triển ứng dụng Java (JDK- Java Development Kit)

JDK là một bộ công cụ cho phép người lập trình phát triển và triển khai các ứng dụng bằng ngôn ngữ java được cung cấp miễn phí bởi công ty JavaSoft (hoặc Sun). Có các bộ Jdk cho các hệ điều hành khác nhau. Các ấn bản của JDK không ngừng được phát hành, các bạn có thể tải về từ địa chỉ http://java.sun.com hoặc http://www.javasoft.com 

Bộ công cụ này 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: Đâ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.
  • 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

Kiểu dữ liệu cơ bản dưới Java

Kiểu số

Kiểu số trong Java
Tên kiểu Kích thước
byte 1 byte
short 2 bytes
int 4 bytes
long 8 bytes
float 4 bytes
double 8 bytes

Kiểu ký tự char 

Java dùng 2 bytes cho kiểu ký tự, theo chuẩn mã UNICODE ( 127 ký tự đầu tương thích với mã ASCII). Do đó, ta sử dụng tương tự như bảng mã ASCII.

Kiểu chuỗi ký tự String 

Thực chất đây là một lớp nằm trong thư viện chuẩn của Java (Core API), java.lang.String

Kiểu luận lý boolean  

Nhận  2 giá trị là : true và false.

Kiểu mảng

  • Khai báo: 
    • int[] a ; float[] yt; String[] names; 
    • hoặc: int a[]; float yt[]; String names[];int maTran[][]; float bangDiem[][];
  • Khởi tạo: 
    • a = new int[3]; yt = new float[10]; names = new String[50]; maTran = int[10][10];
  • Sử dụng mảng: 
    • int i = a[0]; float f = yt[9]; String str = names[20]; int x = matran [2][5];

Các phép toán cơ bản 

Các phép toán trong Java cũng tương tự như trong C++.

  • Phép toán số học: +, - , *, / , % , =,++ , -- , += , - = , *= , /= , %= 
  • Phép toán logic ==, !=, && , ||, ! ,> , < , >= , <=
  • Phép toán trên bit : & , | , ^ , << , >> , ~ 
  • Phép toán điều kiện : ? : 
  • Cách chuyển đổi kiểu:  (Kiểu Mới)

Qui cách đặt tên trong Java

Tên hằng, tên biến, tên lớp, tên phương thức , ... được đặt tên theo qui tắc bắt buộc sau:

  • Tên phân biệt giữa chữ hoa và chữ thường.
  • Dùng các chữ cái, ký tự số, ký tự _ và $.
  • Không bắt đầu bằng ký tự số.
  • Không có khoảng trắng trong tên.

Để chương trình nguồn dễ đọc, dễ theo dõi người ta còn sử dụng quy ước đặt tên sau (không bắt buộc):

  • Tên lớp:
    • Các ký tự đầu tiên của một từ được viết hoa, 
    • Các ký tự còn lại viết thường. 
    • Ví dụ: lớp Nguoi, SinhVien, MonHoc, String, InputStream, OutputStream. . .
  • Tên biến, tên hằng, tên phương thức: 
    • Từ đầu tiên viết thường.
    • Ký tự đầu tiên của từ thứ hai trở đi được viết hoa. Ví dụ: ten, ngaySinh, diaChi, inTen(), inDiaChi(), getInputStream(), . . .
  • Vị trí đặt dấu { và } để bắt đầu và kết thúc các khối như sau:

if (condition)   {

        command1;

        command1;

else {

        command3;

        command4;

}