Bài 1-Giới thiệu và cài đặt môi trường lập trình Java

MỤC TIÊU BÀI HỌC

Sau khi học xong bài học sinh viên có khả năng:
Hiểu được tổng quan về lập trình Java;
– Hiểu được cách cài đặt, thiết lập môi trường lập trình Java;
– Sử dụng được NetbeanS IDE viết chương trình Java HelloWorld;
– Nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình.

NGÔN NGỮ LẬP TRÌNH JAVA

– Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class)
– Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy
– Java là một trong những ngôn ngữ lập trình hướng đối tượng phổ biến
– Phát triển ứng dụng có thể chạy trên nhiều thiết bị phần cứng và hệ điều hành khác nhau

LỊCH SỬ PHÁT TRIỂN JAVA

– Năm 1991 ra đời với tên gọi Oak bởi Sun Microsystems
– Năm 1995 đổi tên thành Java
– Năm 2010 Oracle mua lại

MỘT SỐ ĐẶC TRƯNG CỦA JAVA

Đơn giản (simple)

Java tương tự như C++ nhưng bỏ bớt các đặc tính phức tạp của C++ như quản lý bộ nhớ, pointer, overload toán tử, không dùng include, bỏ struct, union. Java được kế thừa từ C++ và được loại bỏ đi các tính năng khó nhất của C++ nên java dễ sử dụng hơn.

Tính khả chuyển (portable)

Tính khả chuyển của java do chương trình biên dịch tạo ra mã byte (bytecodes) không phụ thuộc hệ thống máy sử dụng. Bytecodes là tập hợp các câu lệnh tương tự như lệnh mã máy (machine code), nó được tạo ra khi một chương trình Java được biên dịch xong.

Tính hướng đối tượng (Object Oriented)

Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn, không thể viết một ứng dụng hướng thủ tục trong Java.

Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước. Hàm chính (main) của một chương trình viết bằng Java cũng phải đặt bên trong một lớp.

Java không có tính đa kế thừa mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa.

Phân tán (distributed)

Nhắm đến phân bố ứng dụng trên mạng, ứng dụng độc lập platform. Cụ thể là Java có hỗ trợ công nghệ lập trình RMI, CORBA, JavaBean. Các công nghệ này cho phép sử dụng lại các lớp đã tạo ra, triệu gọi các phương thức (method) hoặc các đối tượng từ một máy ở xa.

Đa tiến trình (multithread)

Java cho phép tạo nhiều tiến trình, tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau.

Tính an toàn (secure)

Kiểm tra an toàn code trước khi thực thi, có nhiều mức kiểm tra bảo mật à Môi trường thực thi an toàn.
– Mức 1: Mức ngôn ngữ, nhờ tính bao gói dữ liệu của OOP, không cho phép truy cập trực tiếp bộ nhớ mà phải thông qua method.
– Mức 2: Mức Compiler, kiểm tra an toàn cho code trước khi biên dịch.
– Mức 3: Mức Interpreter, trước khi bytecode được thực thi, được kiểm tra an toàn.
– Mức 4: Mức Class, các class trước khi nạp được kiểm tra an toàn.

Biên dịch và thông dịch (compiled-interpreted)

– Java là một NNLT có khả năng biên dịch và khả năng thông dịch.
Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thành mã máy.
– Java class file có thể được dùng ở bất kỳ flatform nào (Write Once  Run Anywhere).
– Các file nguồn à trình biên dịch javac à class file độc lập thiết bị.
– Class file à trình thông dịch  java à mã máy thực thi, không cần liên kết (link)‏.

Giải phóng bộ nhớ (Garbage Collection)

– Java cung cấp một tiến trình mức hệ thống để theo dõi việc cấp phát bộ nhớ.
– Garbage Collection:
   + Đánh dấu và giải phóng các vùng nhớ không còn được sử dụng.
   + Được tiến hành tự động.
   + Cơ chế hoạt động phụ thuộc vào các phiên bản máy ảo.

CÁC DẠNG CÔNG NGHỆ JAVA

Server applications – J2EE

– Nền tảng Java 2, phiên bản doanh nghiệp – Java 2 Enterprise Edition. Hỗ trợ phát triển các ứng dụng thương mại.
– Chạy trên máy chủ lớn với sức mạnh xử lý và dung lượng bộ nhớ lớn, hỗ trợ gắn liền với servlet, jsp và XML.

Desktop applications – J2SE

Phiên bản chuẩn – Java 2 Standard Edition. J2SE hỗ trợ viết các ứng dụng đơn, ứng dụng client-server.
– Java Applications: ứng dụng Java thông thường trên desktop.
– Java Applets: ứng dụng nhúng hoạt động trong trình duyệt web.

Mobile (embedded) applications – J2ME

– Phiên bản thu nhỏ – Java 2 Micro Edition.
– Hỗ trợ viết các ứng dụng trên các thiết bị di động, không dây, thiết bị nhúng,…
CÁC DẠNG ỨNG DỤNG CỦA JAVA

Ứng dụng độc lập (console application)

– Ứng dụng Console là ứng dụng nhập xuất ở chế độ văn bản tương tự như màn hình Console của hệ điều hành MS-DOS.
– Loại chương trình ứng dụng này thích hợp với những ai bước đầu làm quen với ngôn ngữ lập trình Java.
– Các ứng dụng kiểu Console thường được dùng để minh họa các ví dụ cơ bản liên quan đến cú pháp ngôn ngữ, các thuật toán, và các chương trình ứng dụng không cần thiết đến giao diện người dùng đồ họa.

Ứng dụng Applets

– Java Applet là loại ứng dụng có thể nhúng và chạy trong trang web của một trình duyệt web.
– Từ khi internet mới ra đời, Java Applet cung cấp một khả năng lập trình mạnh mẽ cho các trang web.
– Nhưng gần đây khi các chương trình duyệt web đã phát triển với khả năng lập trình bằng VB Script, Java Script, HTML, DHTML, XML,… cùng với sự cạnh tranh khóc liệt giữa Microsoft và Sun đã làm cho Java Applet lu mờ. Và cho đến bây giờ gần như các lập trình viên đều không còn “mặn mà” với Java Applet nữa.

Ứng dụng giao diện (GUI application)

– Việc phát triển các chương trình ứng dụng có giao diện người dùng đồ họa trực quan giống như những chương trình được viết dùng ngôn ngữ lập trình C++ hay Visual Basic đã được java giải quyết bằng thư viện AWT và JFC.
– JFC (Swing) là thư viện rất phong phú và hỗ trợ mạnh mẽ hơn nhiều so với AWT. JFC giúp cho người lập trình có thể tạo ra một giao diện trực quan của bất kỳ ứng dụng nào.

Ứng dụng Web

– Java hỗ trợ mạnh mẽ đối với việc phát triển các ứng dụng Web thông qua công nghệ J2EE (Java 2 Enterprise Edition).
– Công nghệ J2EE hoàn toàn có thể tạo ra các ứng dụng Web một cách hiệu quả không thua kém công nghệ .NET mà Microsft đang quảng cáo.
– Công nghệ viết web hiện có của Java là Servlet và Jsp, ngoài ra còn có sự hỗ trợ của lập trình Socket, Java Bean, RMI và CORBA, EJB.

Ứng dụng nhúng

– Java Sun đưa ra công nghệ J2ME (The Java 2 Platform, Micro Edition J2ME) hỗ trợ phát triển các chương trình, phần mềm nhúng.
– J2ME cung cấp một môi trường cho những chương trình ứng dụng có thể chạy được trên các thiết bị cá nhân như: điện thọai di động (MIDlet), máy tính bỏ túi PDA hay Palm, cũng như các thiết bị nhúng khác.

Ứng dụng cơ sở dữ liệu

Java cũng hỗ trợ lập trình kết nối và tương tác được với hầu hết các hệ quản trị CSDL nổi tiếng như Oracle, SQL Server, MS-Access, MySQL,…

Games

Lập trình Games bằng Java được phát triển mạnh mẽ. Dùng Java có thể viết được games cho máy destop và các thiết bị di động.

JDK- Java Development Kit

Bộ công cụ phát triển ứng dụng Java bao gồm 4 thành phần: ClasseS, Compiler, Debugger, Java Runtime Environment.
JDK 1.0         1996
JDK 1.1         1997
JDK 1.2         1998
JDK 1.3         2000
Java 1.4         2002
Java 5 (1.5)   2004
Java 6            2006

Bao gồm:

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 mà không cần sử dụng trình duyệt như Nestcape, FireFox hay IE, v.v.
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.

JVM – JAVA VIRTUAL MACHINE

– JVM là một phần mềm dựa trên cơ sở máy tính ảo. JVM cũng được xem như là một hệ điều hành thu nhỏ.
– Máy ảo phụ thuộc vào Platform (phần cứng, OS), nó cung cấp môi trường thực thi cho Java (độc lập với platform).
Nó thiết lập cho các mã Java đã biên dịch có một cái nhìn trong suốt (trasparence) về các phần cứng bên dưới.
– Trình biên dịch chuyển mã nguồn thành tập các lệnh không phụ thuộc vào phần cứng.
– Trình thông dịch trên mỗi máy chuyển tập lệnh này thành chương trình thực thi.
– Máy ảo tạo ra một môi trường để thực thi các lệnh bằng cách:
          + Nạp các file .class
         + Quản lý bộ nhớ
         + Dọn “rác”.

IDE – INTEGRATED DEVELOPMENT ENVIRONMENT

-JVM IDE: trong phần mềm máy tính, IDE để chỉ đến một bộ các công cụ phần mềm để soạn thảo, biên dịch, liên kết, gỡ rối, v…v… Ví dụ như bộ Visual Studio của Microsoft.
– IDE giúp phát triển ứng dụng nhanh chóng và hiệu quả hơn. Đơn giản hóa quá trình phát triển phần mềm.
– Một số IDE dành cho lập trình Java là: Jcreator, NetBeans, Eclipse, EditPlus, Borland Jbuilder, Java Studio của Sun,…

Menu bar

Folder View

Component Windows

Code and Design

PHÍM TẮT THÔNG DỤNG

Tìm kiếm và thay thế

Ctrl-F3: tìm từ tại vị trí con trỏ chuột
F3/Shift-F3: tìm từ kế tiếp/trước đó trong file
Ctrl-F/H: tìm/thay thế từ trong file
Alt-F7: tìm vị trí hàm được sử dụng trong projects
Ctrl-R: đổi tên biến tại con trỏ chuột
Alt-Shift-L: copy đường dẫn của file đang mở

Coding trong Java

Alt-Insert: sinh ra code
Ctrl-Shift-I: tự động imports class cần thiết
Alt-Shift-F: định dạng code
Ctrl-Shift-Up/D: copy dòng tại con trỏ chuột
Ctrl-/: bật tắt comment
Ctrl-E/X: xóa dòng tại con trỏ chuột

Biên dịch, kiểm tra và chạy project

F9: biên dịch package/file
F11: build project chính
Shift-F11: xóa và build project chính
Shift-F6: Chạy file hiện tại
F6: Chạy project

Debugging

Ctrl-F5: bắt đầu debugging project chính
Ctrl-Shift-F5: bắt đầu debugging file hiện tại
Ctrl-Shift-F6: bắt đầu debugging file
Ctrl-Shift-F8: đặt breakpoint mới

CHƯƠNG TRÌNH ĐẦU TIÊN

package com.thaynhuom;

//Tên file Hello.java
//Tác giả: thaynhuom.com
public class Hello {

    //Phương thức main, điểm bắt đầu của chương trình
    public static void main(String[] args) {
        System.out.println("Hello World ^_^");

    } //Kết thúc phương thức main

}//Kết thúc lớp Hello

XỬ LÝ NHẬP XUẤT

Các bước thực hiện xử lý nhập
Bước 1: Tạo đối tượng Scanner
            Scanner s = new Scanner(System.in);
Bước 2: Sử dụng đối tượng s để xử lý nhập với phươngthức s.nextABC();

  • Nếu là chuỗi thì ABC sẽ là Line => s.nextLine();
  • Nếu là số nguyên thì ABC sẽ là Int hoặc Long => s.nextInt(); or s.nextLong();
  • Nếu là số thực thì ABC sẽ là Float, Double => s.nextFloat(); or s.nextDouble();

Xử lý xuất với System.out.print() hoặc System.out.println()

Link Download NetBeans: Tại đây