Hướng dẫn học lập trình Java cơ bản

Nhanluu1294 Nhanluu1294 @Nhanluu1294

Hướng dẫn học lập trình Java cơ bản

19/04/2015 01:36 PM
289
Cùng tham khảo những hướng dẫn học lập trình Java cơ bản , không hề khó đâu nhé các bạn


Bắt đầu với lập trình Java cơ bản

ngon-ngu-java2
  1. Các chỉ dẫn cài đặt

    Trong mấy phần tiếp theo, tôi sẽ hướng dẫn bạn qua từng bước tải về và cài đặt Java 2 Platform Standard Edition (J2SE), phiên bản 1.4.2 và IDE Eclipse. Nền Java giúp bạn dịch và chạy chương trình Java. Còn IDE Eclipse mang lại cho bạn công cụ hùng mạnh và thân thiện với người sử dụng để viết mã lệnh bằng ngôn ngữ Java. Nếu bạn đã cài đặt Java SDK và Eclipse, hãy vui lòng chuyển ngay sang phần Tìm hiểu nhanh về Eclipse hoặc mục tiếp theo, Các khái niệm lập trình hướng đối tượng, nếu bạn cảm thấy thuận tiện.

    Cài đặt Java SDK

    Mục đích ban đầu của ngôn ngữ Java là cho phép các lập trình viên viết một chương trình để chạy trên bất cứ nền tảng nào, một ý tưởng gói gọn trong cụm từ “Viết một lần, chạy bất cứ đâu” (WORA). Trong thực tế, điều này hoàn toàn không đơn giản, nhưng nó đang trở nên dễ dàng hơn. Nhiều thành phần khác nhau trong công nghệ Java hỗ trợ cho nỗ lực này. Java có 3 ấn bản, ấn bản chuẩn (Standard), ấn bản doanh nghiệp (Enterprise), và ấn bản di động (Mobile), hai ấn bản sau tương ứng dành cho việc phát triển ứng dụng doanh nghiệp và thiết bị cầm tay. Chúng ta sẽ làm việc với J2SE, bao gồm tất cả các thư viện lõi của Java. Tất cả những gì bạn cần làm là tải về và cài đặt.
    Để tải về bộ phát triển phần mềm J2SE (J2SE SDK), làm theo các bước sau:
    1. Mở trình duyệt và đi đến trang chủ Công nghệ Java. Tại giữa đầu trang bạn sẽ thấy nhiều đường kết nối đến các vùng chủ đề công nghệ Java khác nhau. Chọn J2SE (Core/Desktop).
    2. Trong danh sách các bản phát hành J2SE hiện tại, chọn J2SE 1.4.2.
    3. Tại cột dẫn hướng bên trái của trang kết quả, nhấp chuột vào Downloads.
    4. Có một vài liên kết tải về trên trang này. Tìm và nhấp chọn liên kết Download J2SE SDK.
    5. Chấp nhận các điều kiện về giấy phép sử dụng và nhấp chọn Continue.
    6. Bạn sẽ thấy một danh sách các gói tải về theo từng nền hệ điều hành. Chọn gói tải về thích hợp với bất cứ nền hệ điều hành nào mà bạn đang dùng.
    7. Ghi lưu tệp vào ổ cứng của bạn.
    8. Khi tải về xong, chạy chương trình cài đặt để cài đặt SDK trên ổ cứng của bạn, nên chọn thư mục có tên thích hợp ngay trong thư mục gốc của ổ cứng.
    Tuyệt! Bây giờ bạn đã có môi trường Java trên máy mình. Bước tiếp theo là cài đặt môi trường phát triển tích hợp (IDE).

    Cài đặt Eclipse

    Môi trường phát triển tích hợp (IDE) che giấu đi nhiều chi tiết công nghệ trần tục trong khi làm việc với ngôn ngữ Java, do đó bạn có thể tập trung vào viết và chạy mã lệnh. Bộ JDK mà bạn vừa cài đặt bao gồm vài công cụ dòng lệnh cho phép bạn biên dịch và chạy các chương trình Java mà không cần có IDE, nhưng sử dụng những công cụ này nhanh chóng trở nên rất vất vả chỉ trừ những chương trình đơn giản nhất. Sử dụng một IDE che giấu đi nhiều chi tiết sẽ mang lại cho bạn những công cụ mạnh để giúp bạn lập trình nhanh hơn và tốt hơn, và đơn giản nó là một cách lập trình rất dễ chịu.
    Không còn cần thiết phải trả tiền để mua một IDE tuyệt hảo. IDE Eclipse là một dự án nguồn mở và nó là của bạn, tải về miễn phí. Eclipse lưu trữ và theo dõi mã lệnh Java của bạn trong những tệp dữ liệu dễ đọc nằm trong hệ thống tệp của bạn. (Bạn cũng có thể dùng Eclipse để làm việc với mã lệnh trong kho CVS). Tin tốt lành là Eclipse để bạn làm việc với tệp nếu bạn muốn, nhưng nó ẩn giấu đi chi tiết về tệp nếu bạn chỉ muốn làm việc với các cấu trúc Java khác như các lớp chẳng hạn (ta sẽ thảo luận chi tiết sau).
    Việc tải về và cài đặt Eclipse rất đơn giản. Hãy làm theo những bước sau:
    1. Mở trình duyệt và đi đến trang web của Eclipse.
    2. Nhấn chọn đường liên kết Downloads ở bên trái của trang.
    3. Nhấn chọn đường liên kết Main Eclipse Download Site để vào trang tải về của dự án Eclipse.
    4. Bạn sẽ thấy một danh sách các kiểu xây dựng (build types) và tên. Chọn mục 3.0.
    5. Ở giữa trang, bạn sẽ thấy một danh sách các SDK Eclipse tùy theo nền hệ điều hành; chọn cái thích hợp với hệ thống của bạn.
    6. Ghi lưu tệp vào ổ cứng.
    7. Khi tải về xong, chạy trình cài đặt và cài đặt Eclipse vào ổ cứng của bạn, nên chọn thư mục có tên thích hợp ngay trong thư mục gốc của ổ cứng.
    Tất cả những việc còn lại bây giờ là thiết đặt IDE.

    Thiết đặt Eclipse

    Để dùng Eclipse viết mã Java, bạn phải cho Eclipse biết vị trí Java ở đâu trên máy của bạn. Hãy làm theo các bước sau:
    1. Khởi chạy Eclipse bằng cách nhấn đúp chuột vào tệp eclipse.exe, hoặc tệp chạy thi hành tương đương trên hệ điều hành của bạn.
    2. Khi màn hình Welcome xuất hiện, nhấn đường liên kết Go To The Workbench. Thao tác này sẽ đưa bạn đến bối cảnh tài nguyên (sẽ đề cập chi tiết sau).
    3. Nhấn chọn Window>Preferences>Installed JREs, thao tác này cho phép bạn chỉ rõ vị trí nơi môi trường Java đã được cài đặt vào máy bạn (xem hình 1).
    Hình 1. Các lựa chọn ưu tiên của Eclipse
    preferencesDialog
    4. Nhiều khả năng là Eclipse sẽ tìm thấy JRE đã cài đặt sẵn, nhưng bạn nên chỉ rõ ràng đến JRE mà bạn đã cài trong mục Cài đặt Java SDK. Bạn có thể làm điều đó trong hộp thoại Preferences (các lựa chọn ưu tiên). Nếu Eclipse liệt kê một JRE đang có sẵn, nhấn chuột chọn nó và nhấn Edit, trái lại, nhấn Add.
    5. Chỉ rõ đường dẫn đến thư mục JRE của JDK mà bạn đã cài trong mục Cài đặt Java SDK.
    6. Nhấn OK.
    Bây giờ thì Eclipse đã được thiết đặt để biên dịch và chạy mã lệnh Java. Trong phần tiếp theo chúng ta sẽ đi một vòng xem qua môi trường Eclipse để bạn làm quen với công cụ này.

    Một vòng xem qua Eclipse

    Làm việc với Eclipse là một chủ đề lớn và hầu như vượt ra ngoài phạm vi của tài liệu hướng dẫn này. Xem phần Các tài nguyên để có thêm thông tin về Eclipse. Ở đây, chúng ta sẽ chỉ trình bày vừa đủ để bạn làm quen với cách làm việc của Eclipse và sử dụng nó để lập trình Java như thế nào.
    Giả sử bạn vẫn có Eclipse đang chạy, bạn ngừng xem phần phối cảnh Tài nguyên. Eclipse cung cấp một tập các phối cảnh trên mã lệnh bạn viết. Phối cảnh Tài nguyên (Resource) sẽ hiển thị một khung nhìn hệ thống tệp tin của bạn trong vùng làm việc (workspace) Eclipse mà bạn đang sử dụng. Một vùng làm việc giữ tất cả các tệp liên quan đến việc phát triển trong Eclipse. Bây giờ thì chưa có gì trong vùng làm việc của bạn để bạn phải thực sự quan tâm.
    Nhìn chung, Eclipse có các phối cảnh, chứa các khung nhìn. Trong phối cảnh Tài nguyên, bạn sẽ thấy có khung nhìn Navigator, khung nhìn Outline, … Bạn có thể kéo thả tất cả những khung nhìn này vào vị trí bất kỳ bạn muốn. Nó là môi trường tùy biến hầu như vô hạn. Thế nhưng bây giờ, những xếp đặt mặc định cũng đủ tốt. Nhưng những gì chúng ta thấy chưa cho phép ta làm những gì ta muốn. Bước đầu tiên để viết mã lệnh Java trong Eclipse là tạo một dự án Java. Đây không phải là một cấu trúc ngôn ngữ Java; nó đơn giản là một cấu trúc Eclipse giúp bạn tổ chức mã lệnh Java của mình. Làm theo các bước sau để tạo dự án Java:
    1. Nhấn chuột vào File>New>Project để hiển thị cửa sổ thủ thuật tạo dự án mới (New Project wizard – xem hình 2). Đây thực sự là một trình thủ thuật của thủ thuật, cho phép bạn lựa chọn sử dụng thủ thuật nào bạn muốn (thủ thuật New Project, thủ thuật New File, vân vân).
    Hình 2. Trình thủ thuật mở một dự án mới javaProjectWizard
    2. Hãy đảm bảo là bạn chọn thủ thuật Java Project và nhấn Next.
    3. Nhập bất kỳ tên dự án nào bạn muốn (tên “Intro” có thể là một gợi ý hay), giữ nguyên các lựa chọn mặc định và nhấn Finish.
    4. Ở bước này, Eclipse sẽ hỏi bạn liệu có nên chuyển sang phối cảnh Java không. Nhấn chọn No.
    Bạn vừa tạo một dự án Java có tên là Intro, bạn sẽ phải nhìn thấy nó trong khung nhìn Navigator ở góc trên bên trái của màn hình. Chúng ta sẽ không chuyển sang phối cảnh Java sau khi tạo dự án vì có một phối cảnh tốt hơn để dùng cho những mục đích hiện tại của chúng ta. Nhấn nút Open Perspective trên phiếu nằm ở góc trên bên phải của cửa sổ, sau đó chọn phối cảnh Java Browsing. Phối cảnh này sẽ hiển thị cho bạn những gì bạn cần thấy để dễ dàng viết một chương trình Java. Khi viết mã lệnh Java, ta sẽ duyệt qua một vài đặc tính Eclipse nữa để bạn có thể học cách viết, sửa đổi và quản lý mã lệnh của mình. Tuy nhiên, trước khi thực hiện điều này, chúng ta phải trình bày một vài khái niệm cơ bản về lập trình hướng đối tượng, ta sẽ thực hiện điều này ở phần tiếp theo. Ngay bây giờ, chúng ta sẽ kết thúc phần này bằng cách xem một số tài liệu Java trực tuyến.

    API Java trực tuyến

    Giao diện lập trình ứng dụng (API) Java rất nhiều, bởi vậy học cách tìm kiếm như thế nào là điều quan trọng. Nền tảng java đủ lớn để cung cấp cho bạn hầu như bất cứ công cụ nào mà bạn cần khi lập trình. Học cách khai thác các khả năng cũng cần nhiều nỗ lực như khi học các cơ chế của ngôn ngữ.
    Nếu bạn vào trang tài liệu Java của Sun (xem phần Các tài nguyên để tìm các đường liên kết), bạn sẽ thấy một đường liên kết tới các tài liệu API cho từng phiên bản SDK. Đi theo liên kết dành cho phiên bản 1.4.2 để xem tài liệu đó như thế nào.
    Bạn sẽ thấy có 3 khung trên trình duyệt:
    * Danh sách các gói có sẵn ở khung trên cùng bên trái
    * Danh sách tất cả các lớp ở khung dưới bên trái
    * Chi tiết của cái mà bạn đã chọn ở phía bên phải
    Tất cả các lớp trong SDK đều có ở đây. Chọn lớp HashMap. Ở bên phải bạn sẽ thấy mô tả chi tiết của lớp này. Phía trên đỉnh là tên và gói chứa lớp này, hệ phân bậc các lớp, các giao diện mà lớp thực hiện (phần này nằm ngoài phạm vi của tài liệu này), và mọi lớp con trực tiếp mà lớp này hiện có. Tiếp sau, bạn sẽ thấy mô tả chi tiết về lớp. Đôi khi trong mô tả còn có cả ví dụ cách dùng, các liên kết có liên quan, gợi ý về kiểu cách, … Sau phần mô tả, bạn sẽ thấy danh sách các hàm tạo (constructors), tiếp đó là danh sách tất cả các phương thức của lớp, tiếp nữa là toàn bộ các phương thức thừa kế, sau đó là mô tả chi tiết của tất cả các phương thức. Thông tin rất đầy đủ và có một bảng chỉ mục chi tiết ở trên và dưới khung bên tay phải.
    Nhiều thuật ngữ trong đoạn trên đây (như gói – package) là mới với bạn vào lúc này. Đừng lo lắng. Chúng ta sẽ trình bày chúng một cách chi tiết. Bây giờ, điều quan trọng là bạn đã biết rằng tài liệu về ngôn ngữ Java luôn sẵn sàng trực tuyến cho bạn dùng.

Khái niệm cơ bản về lập trình hướng đối tượng OOP

  1. ngon-ngu-java2

    Một đối tượng là gì?
    Java được biết đến như một ngôn ngữ hướng đối tượng (OO – object-oriented), bạn có thể sử dụng ngôn ngữ này để lập trình hướng đối tượng. Điều này rất khác so với lập trình thủ tục, và có thể hơi lạ lùng đối với hầu hết các lập trình viên không hướng đối tượng. Bước đầu tiên bạn phải hiểu đối tượng là gì, vì đó là khái niệm cơ sở của OOP.
    Một đối tượng là một bó mã lệnh tự thân trọn vẹn (self-contained), tự hiểu chính mình và có thể nói cho các đối tượng khác về chính mình nếu chúng đưa ra các yêu cầu mà nó hiểu được. Một đối tượng có các thành phần dữ liệu (các biến) và các phương thức, chính là những yêu cầu mà nó biết cách trả lời (dù chúng không được diễn đạt bằng lời như các câu hỏi). Tập các phương thức mà một đối tượng biết cách trả lời được gọi là giao diện của đối tượng. Một vài phương thức là mở công cộng, nghĩa là các đối tượng khác có thể gọi đến chúng. Tập các phương thức này được gọi là giao diện công cộng của đối tượng.
    Khi một đối tượng gọi phương thức của một đối tượng khác, thì được gọi là gửi một thông điệp (sending a message hoặc message send). Cụm từ này là thuật ngữ của OO nhưng hầu hết trong giới Java mọi người hay nói, “gọi phương thức này” hơn là “gửi thông điệp này”. Trong phần tiếp theo, chúng ta sẽ xem xét một ví dụ minh họa khái niệm giúp bạn hiểu vấn đề này rõ ràng hơn.

    Ví dụ minh họa khái niệm đối tượng
    Giả sử chúng ta có đối tượng Person. Mỗi Person có tên, tuổi, chủng tộc và giới tính. Mỗi Person cũng biết nói và biết đi. Một Person có thể hỏi tuổi của một Person khác, hoặc yêu cầu một Person khác bắt đầu đi (hay dừng). Diễn đạt theo thuật ngữ lập trình, bạn có thể tạo một đối tượng Person và khai báo một số biến (như tên và tuổi). Nếu bạn tạo một đối tượng Person thứ hai, đối tượng này có thể hỏi tuổi của đối tượng thứ nhất hoặc yêu cầu đối tượng thứ nhất bắt đầu đi. Nó có thể thực hiện những điều ấy bằng cách gọi đến các phương thức của đối tượng Person đầu tiên. Khi chúng ta bắt đầu viết mã lệnh bằng ngôn ngữ Java, bạn sẽ hiểu ngôn ngữ này triển khai thực hiện khái niệm đối tượng ra sao.
    Nói chung, khái niệm đối tượng là như nhau trong ngôn ngữ Java và các ngôn ngữ hướng đối tượng khác, mặc dù việc triển khai thực hiện là khác nhau giữa các ngôn ngữ. Các khái niệm là phổ quát. Vì sự thật này, lập trình viên hướng đối tượng, bất chấp họ lập trình bằng ngôn ngữ nào, có xu hướng phát biểu khác so với những lập trình viên thủ tục. Các lập trình viên thủ tục thường nói về các hàm và các mô đun. Lập trình viên hướng đối tượng lại nói về các đối tượng và họ thường nói về các đối tượng này bằng cách sử dụng các đại từ nhân xưng. Chẳng hề bất thường khi bạn nghe một lập trình viên hướng đối tượng nói với đồng nghiệp, “đối tượng Supervisor nói với đối tượng Employee, ‘cho tôi ID của cậu,’” vì anh ta cần những thứ này để gán nhiệm vụ cho Employee.
    Lập trình viên hướng thủ tục có thể nghĩ cách nói chuyện này thật lạ lùng, nhưng nó lại hoàn toàn bình thường đối với lập trình viên hướng đối tượng. Trong thế giới lập trình của họ, mọi thứ đều là đối tượng (cũng có một vài ngoại lệ đáng chú ý trong ngôn ngữ Java) và các chương trình là chỉ là sự tương tác (hay nói chuyện) giữa các đối tượng với nhau.

    Các nguyên tắc hướng đối tượng cơ bản
    Khái niệm đối tượng là trọng yếu đối với lập trình hướng đối tượng, và dĩ nhiên, ý tưởng các đối tượng giao tiếp với nhau bằng các thông điệp cũng vậy. Nhưng có 3 nguyên tắc cơ bản mà bạn cần hiểu.
    Bạn có thể nhớ 3 nguyên tắc hướng đối tượng cơ bản bằng cụm viết tắt PIE:
    * Đa hình ( Polymorphism)
    * Thừa kế ( Inheritance)
    * Bao gói ( Encapsulation)
    Đó là những từ trừu tượng nhưng những khái niệm này thực sự không quá khó hiểu. Trong các phần tiếp theo, chúng ta sẽ bàn về từng khái niệm này ở mức độ chi tiết hơn, theo thứ tự ngược lại.

    Bao gói
    Hãy nhớ rằng, một đối tượng là tự thân trọn vẹn, chứa đựng các thành phần dữ liệu và hành động mà nó có thể thực hiện trên các thành phần dữ liệu ấy. Đây là việc triển khai thực hiện nguyên lý gọi là ẩn giấu thông tin. Ý tưởng của nó là một đối tượng tự nó hiểu mình. Nếu một đối tượng khác muốn điều gì từ đối tượng này thì nó phải hỏi. Theo thuật ngữ lập trình hướng đối tượng, phải gửi một thông điệp đến một đối tượng khác để hỏi về tuổi. Theo thuật ngữ Java, phải gọi một phương thức của đối tượng khác để nó trả lại kết quả là tuổi.
    Sự bao gói đảm bảo rằng mỗi đối tượng là khác nhau và chương trình là một cuộc chuyện trò giữa các đối tượng. Ngôn ngữ Java cho phép các lập trình viên vi phạm nguyên lý này nhưng hầu như luôn là một ý tưởng tồi nếu làm như thế.

    Thừa kế
    Khi bạn được sinh ra, nói về khía cạnh sinh học, bạn là tổ hợp DNA của cha mẹ mình. Bạn không hoàn toàn giống ai trong số họ, mà bạn giống cả hai người. OO cũng có nguyên tắc tương tự đối với các đối tượng. Quay lại với đối tượng Person. Ta nhớ lại rằng mỗi người có một chủng tộc. Không phải tất cả các Person đều cùng chủng tộc, nhưng dù sao thì họ cũng có điểm tương tự như nhau chứ? Chắc chắn vậy! Họ chẳng phải ngựa, tinh tinh hay cá voi mà là người. Mọi con người đều có những điểm chung nhất định và điều này giúp phân biệt con người với các loài động vật khác. Nhưng giữa mọi người cũng có khác biệt với nhau. Một đứa trẻ có giống hệt một người trưởng thành không? Không. Đi lại và nói là khác nhau rồi. Nhưng một đứa trẻ thì vẫn chắc chắn là một con người.
    Theo ngôn ngữ hướng đối tượng, Person và Baby là các lớp sự vật hiện tượng thuộc cùng một hệ thống phân bậc, và Baby thừa kế các đặc tính và hành vi từ lớp cha của nó. Chúng ta có thể nói rằng một Baby cụ thể là một kiểu Person hay Baby thừa kế từ Person. Nhưng không có chiều ngược lại – một Person không nhất thiết phải là một Baby. Mỗi đối tượng Baby là một cá thể của lớp Baby và khi chúng ta tạo một đối tượng Baby, chúng ta cá thể hóa lớp này. Hãy coi lớp như là khuôn mẫu chung cho các cá thể của lớp đó. Nói chung, đối tượng có thể làm những gì tùy thuộc vào kiểu của đối tượng đó là gì – hoặc nói theo cách khác, đối tượng đó là cá thể của lớp nào. Cả Baby và Adult đều thuộc kiểu Person, nhưng một đối tượng (Adult) có thể có một việc làm (job) còn đối tượng kia (Baby) thì không.
    Theo thuật ngữ Java, Person là một lớp bậc trên (superclass) của Baby và Adult, và các lớp này là lớp con của Person. Một khái niệm có liên quan khác là ý tưởng về trừu tượng hóa. Person có mức trừu tượng hóa cao hơn Baby hay Adult. Cả hai đều là kiểu Person nhưng có những khác biệt nho nhỏ. Tất cả các đối tượng Person đều có những điểm chung (như tên và tuổi). Bạn có thể cá thể hóa một Person? Thực sự là không! Bạn hoặc có một Baby hoặc có một Adult. Trong Java, Person được gọi là lớp trừu tượng. Bạn không thể trực tiếp có một cá thể của lớp Person. Bạn sẽ có Baby hoặc Adult, cả hai đều là kiểu Person, nhưng là Person đã được thực tế hóa. Các lớp trừu tượng nằm ngoài phạm vi của tài liệu này, chúng tôi sẽ không nói thêm về chúng nữa.
    Bây giờ, ta hãy suy nghĩ xem với một Baby, “nói” (speak) có nghĩa là gì. Chúng ta sẽ xét đến các hệ quả trong phần thảo luận tiếp theo.

    Đa hình
    Baby có “nói” như Adult không? Dĩ nhiên là không rồi. Một Baby có thể ê a, nhưng không nhất thiết nói ra những lời hiểu được như Adult. Do đó, nếu tôi cá thể hóa một đối tượng Baby (hay là “cá thể hóa một Baby” cũng có cùng ý nghhĩa – từ “đối tượng” được ngầm hiểu) và cho nó nói, thì nó chỉ có nghĩa là những tiếng ê a. Ta hy vọng rằng Adult “nói” thì mạch lạc hơn.
    Trong hệ thống phân bậc con người, chúng ta có Person nằm ở đỉnh với Baby và Adult nằm phía dưới nó, là các lớp con. Tất cả mọi người đều có thể nói, Baby và Adult cũng vậy, nhưng sẽ nói khác nhau. Baby chỉ ê a và phát những âm thanh đơn giản. Adult nói thành lời. Đó chính là sự đa hình: các đối tượng làm việc theo cách riêng của chúng.

    Ngôn ngữ Java có phải là ngôn ngữ hướng đối tượng không ?
    Như chúng ta sẽ thấy, ngôn ngữ Java cho phép bạn tạo các đối tượng hạng nhất (first-class), nhưng không phải bất cứ cái gì trong ngôn ngữ này đều là đối tượng. Một số ngôn ngữ OO như Smalltalk lại hoàn toàn khác. Smalltalk hoàn toàn là OO, có nghĩa là mọi thứ trong ngôn ngữ này đều là đối tượng. Java là ngôn ngữ lai tạp giữa đối tượng và phi đối tượng. Nó cho phép một đối tượng biết rõ các đối tượng khác, nếu với tư cách là một lập trình viên bạn cho phép điều đó xảy ra. Điều này vi phạm nguyên lý bao gói.
    Tuy nhiên, ngôn ngữ Java cũng cung cấp cho tất cả các lập trình viên OO những công cụ cần thiết để tuân theo mọi quy tắc OO và viết mã lệnh OO rất chuẩn. Nhưng làm được như vậy cần phải tự có kỷ luật. Ngôn ngữ không ép bạn làm việc đúng đắn được.
    Trong khi những người thuần túy chủ nghĩa hướng đối tượng tranh luận xem liệu Java là hướng đối tượng hay không, thực sự đây không phải là một lý lẽ mang lại ích lợi. Nền tảng Java sẽ giữ vững vị trí của nó. Hãy học cách lập trình hướng đối tượng tốt nhất có thể với mã lệnh Java và cứ để những lý lẽ thuần túy chủ nghĩa cho những người khác. Ngôn ngữ Java giúp bạn viết chương trình rõ ràng, khá ngắn gọn, dễ bảo trì, điều này là khá đủ trong cuốn sách của tôi đối với hầu hết các tình huống nghề nghiệp.

Ngôn ngữ lập trình Java bên dưới cái vỏ ngoài

ngon-ngu-java2
Nền tảng Java hoạt động như thế nào
Khi bạn viết mã lệnh bằng ngôn ngữ Java, giống như nhiều ngôn ngữ khác, bạn viết mã nguồn, sau đó bạn biên dịch nó; trình biên dịch kiểm tra mã lệnh của bạn và đối chiếu với các quy tắc cú pháp của ngôn ngữ. Nhưng nền tảng Java bổ sung thêm một bước khác nữa ngoài các bước trên. Khi bạn biên dịch mã Java, bạn sẽ nhận được kết quả là mã byte (bytecodes). Sau đó, máy ảo Java (JVM) sẽ thông dịch các mã byte này lúc chạy thi hành– đó là khi bạn yêu cầu Java chạy chương trình.
Theo thuật ngữ hệ thống tệp, khi bạn viết mã, bạn sinh ra một tệp .java. Khi bạn biên dịch tệp này, trình biên dịch của Java sinh ra một tệp .class, chứa các mã byte. JVM đọc và thông dịch tệp .class này lúc chạy thi hành và nó hoạt động như thế nào là tùy thuộc vào nền hệ thống mà bạn đang chạy. Để chạy trên các nền hệ thống khác nhau, bạn phải biên dịch mã nguồn của mình đối với các thư viện dành riêng cho nền hệ thống đó. Bạn có thể hình dung, lời hứa hẹn “viết một lần, chạy mọi nơi” sẽ trở thành “viết một lần, kiểm thử mọi nơi”. Đó là có những sự khác biệt mong manh (hay không mong manh cho lắm) giữa các nền hệ thống, có thể khiến cho mã lệnh của bạn hành xử khác nhau trên những nền tảng khác nhau.

Thu dọn rác
Khi bạn tạo các đối tượng Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho các đối tượng này từ heap, đây là vùng bộ nhớ lớn có sẵn để cấp trong máy tính của bạn. Quá trình chạy thi hành sẽ theo vết của những đối tượng này giùm bạn. Khi chương trình của bạn không sử dụng các đối tượng đó nữa thì JRE sẽ vứt bỏ chúng. Bạn không phải để tâm đến chúng nữa.
Nếu bạn đã từng viết bất cứ phần mềm nào bằng ngôn ngữ C++, cũng là một ngôn ngữ hướng đối tượng (người ta cho rằng thế), với tư cách là lập trình viên, bạn phải cấp phát và lấy lại bộ nhớ dành cho đối tượng mình tạo ra một cách tường minh bằng cách sử dụng các hàm malloc() và free(). Điều đó đối với các lập trình viên thật là phiền hà. Nó cũng nguy hiểm nữa, vì nó mở đường cho việc thất thoát bộ nhớ len lỏi vào trong chương trình của bạn. Thất thoát bộ nhớ gây ra việc chương trình của bạn ngốn bộ nhớ với tốc độ phát hoảng, điều này gây sức ép lên bộ vi xử lý của máy tính đang chạy chương trình. Nền tảng Java giúp bạn loại bỏ nỗi lo về tất cả những vấn đề đó vì nó có thành phần thu dọn rác.
Bộ thu dọn rác của Java là một tiến trình nền phía sau để loại các đối tượng không còn được dùng tới nữa, chứ không buộc bạn phải tường minh làm điều đó. Máy tính rất thích hợp trong việc lưu giữ vết của hàng ngàn thứ và cấp phát tài nguyên. Nền tảng Java giúp cho phép máy tính của bạn thực hiện điều đó. Nó duy trì số đếm các tham chiếu đang dùng đến mọi đối tượng trong bộ nhớ. Khi con số này chạm mức 0, bộ thu dọn rác sẽ lấy lại vùng bộ nhớ mà đối tượng ấy đã sử dụng. Bạn có thể trực tiếp gọi bộ thu dọn rác, nhưng tôi không bao giờ phải làm điều đó. Nó thường tự xử lý và tất nhiên là cũng sẽ tự xử lý trong mọi mã ví dụ trong tài liệu này.

IDE so với các công cụ dòng lệnh
Như chúng ta đã lưu ý trước đây, nền tảng Java đi kèm với các công cụ dòng lệnh cho phép bạn biên dịch ( javac) và chạy ( java) các chương trình Java. Vậy tại sao ta lại sử dụng một IDE như Eclipse? Đơn giản chỉ vì việc sử dụng các công cụ dòng lệnh có thể rất phiền phức, bất kỳ chương trình có độ phức tạp như thế nào. Các công cụ dòng lệnh có sẵn nếu bạn cần đến chúng, nhưng sử dụng một IDE thường là lựa chọn khôn ngoan hơn.
Lý do chính của khẳng định này là IDE quản lý tệp và đường dẫn giúp bạn, và có các trình hướng dẫn tương tác để hỗ trợ bạn khi bạn muốn thay đổi môi trường chạy thi hành của mình. Khi tôi muốn biên dịch một chương trình Java bằng công dụ dòng lệnh javac, tôi phải lo việc thiết đặt biến môi trường CLASSPATH từ lúc đầu để JRE có thể biết nơi đặt các lớp của tôi, hoặc tôi phải thiết đặt giá trị cho biến này lúc biên dịch. Trong một IDE như Eclipse, tất cả những gì tôi phải làm là cho Eclipse biết tìm JRE ở đâu. Nếu mã lệnh của tôi dùng các lớp không do tôi viết ra, tất cả những gì tôi phải làm là cho Eclipse biết những thư viện mà dự án của tôi tham chiếu đến là gì và tìm chúng ở đâu. Điều này đơn giản hơn nhiều so với việc dùng dòng lệnh để gõ những câu lệnh dài đến phát khiếp để chỉ rõ đường dẫn đến lớp.
Nếu bạn muốn hay cần dùng các công cụ dòng lệnh, bạn có thể tìm thấy cách sử dụng chúng ở trang Web về công nghệ Java của Sun


Lập trình viên
Cách tự học lập trình hiệu quả nhất
Hướng dẫn học lập trình plc s7-200 đơn giản
Hướng dẫn học lập trình web bằng HTML cơ bản
Cách tư duy lập trình giúp công việc bạn nhanh hơn
Hướng dẫn học lập trình Excel căn bản

(St)
Hỏi đáp, bình luận, trả bài:
*địa chỉ email của bạn được bảo mật

Hot nhất
Top xink
Bộ sưu tập
Chợ xink
Thanh lý