[Java – S1] Các khái niệm cơ bản trong Java

Xin chào các bạn, lại là mình, thằng admin đây. Mở đầu cho chuyên mục lập trình Java, chúng ta sẽ đi tìm hiểu một số khái niệm cơ bản trước khi tạo một Project đầu tiên, gọi là cho đỡ bỡ ngỡ. Một số khái niệm rất đơn giản, mình chỉ dịch từ tiếng Anh sang tiếng Việt. Tuy nhiên, đây đều là các khái niệm rất quang trọng, cần phải hiểu đúng nghĩa, đúng bản chất. Đồng thời cũng là để phòng trường hợp khi có người đề cập đến (đi phỏng vấn chẳng hạn). Mình cũng khuyến khích các bạn nên đọc tài liệu tiếng Anh để làm quen với cách tìm hiểu và tìm kiếm trên Google bằng tiếng Anh. Và một lý do nữa là “hầu hết những thứ hay ho đều được viết bằng tiếng Anh” (trích dẫn ở đâu không nhớ,hehe).

  • IDE (Integrated Development Environment)
    IDE là một phần mềm ứng dụng cung cấp các công cụ để lập trình viên làm việc dễ dàng hơn. Một IDE thông thường phải đảm bảo 3 chức năng cơ bản là edit code, build code và debug. Ngoài ra, hầu hết các IDE hiện đại còn có cơ chế tự động hoàn thành code thông minh. Có nhiều IDE dùng để lập trình Java như Eclipse, Netbean, IntelliJ… nhưng phổ biến nhất vẫn là Eclipse và Netbean. S-lightning sẽ hướng dẫn các bạn cách cài đặt và lập trình trên môi trường Eclipse vì nó khá nhẹ và nhanh, rất phù hợp nếu bạn có một chiếc máy tính cấu hình không quá khỏe.
  • JDK (Java Development Kit)
    Java là ngôn ngữ lập trình mức cao (high – level programming language). Nhiều tài liệu dùng từ “bậc cao” không sai, nhưng rất dễ gây cho chúng ta sự hiểu lầm thành “cao cấp và đẳng cấp”. Ngôn ngữ lập trình mức cao được viết theo cách gần với ngôn ngữ tự nhiên nhất (ngôn ngữ mà chúng ta dùng hàng ngày), giúp quá trình phát triển phần mềm trở nên đơn giản và dễ hiểu hơn so với các ngôn ngữ lập trình mức thấp hơn như Assembly, C, C++. Tuy nhiên, càng tự nhiên bao nhiêu thì càng khó để cho máy tính hiểu bấy nhiêu, chắc chắn rồi. Vì vậy, để máy tính hiểu được, người ta tạo ra một trình biên dịch javac (java compiler) biên dịch mã nguồn(file .java) thành mã máy (java bytecode) và một máy ảo java JVM (Java Virtual Machine) chịu trách nhiệm đọc và chạy bytecode. Một trình thông dịch (interpreter) là một thành phần của máy ảo Java. Đây cũng là lý do các ngôn ngữ lập trình mức thấp hơn (được biên dịch trực tiếp vào mã nguồn gốc, mã mà máy tính có thể hiểu trực tiếp) có tốc độ chạy cao hơn.
    JDK là một bộ các công cụ phát triển phần mềm (Software Development Kit) trên nền tảng Java, trong đó có chứa java compiler và java interpreter được đề cập ở trên.
    Xem thêm về JDK tại đây.
  • Variable and Data type (Biến và các kiểu dữ liệu)
    Kiểu dữ liệu là một khái niệm đã quá quen thuộc vì nó được áp dụng phổ biến trong rất nhiều ngành khoa học kỹ thuật. Tuy nhiên, vì phần này rất quan trọng nên mình sẽ nhắc lại một chút. Kiểu dữ liệu được kiểu đơn giản là các kiểu khác nhau để phân biệt các loại dữ liệu được lưu trong máy vi tính. Giống như quần thì có quần dài, quần đùi, quần ngố… Vậy, quần như thế nào gọi nào gọi là quần dài, ngắn đến mức nào thì gọi là quần đùi, ngắn hết cỡ thì sao, hay thế nào thì gọi là quần, thế nào thì gọi là váy? Dĩ nhiên, các kiểu dữ liệu khác nhau phải được phân biệt với nhau giống như vậy, chúng phân biệt với nhau bởi kích thước và giá trị mà chúng đại diện.
    Ví dụ: Kiểu dữ liệu boolean đại diện cho các giá trị logic (true false); kiểu dữ liệu int đại diện cho các số nguyên có giá trị từ -231 đến 231-1 (ngoài khoảng này là một kiểu số khác)…
    Một điểm lưu ý khác là mỗi ngôn ngữ lập trình có thể sử dụng các thuật ngữ khác nhau để đặt tên cho các kiểu dữ liệu, thậm chí có thể có khoảng giá trị khác nhau cho cùng một kiểu dữ liệu.
    Biến (variable) là một vị trí vùng nhớ có chứa giá trị hoặc không chứa giá trị. Việc khai báo biến đồng nghĩa với việc ra lệnh cho bộ nhớ cấp phát không gian lưu trữ cho biến đó. Giá trị của biến được truy xuất bởi một tên định danh, thường gọi là tên biến. Mỗi biến có một kiểu dữ liệu khác nhau, được khai báo đồng thời với tên biến. Giá trị của biến có thể thay đổi trong khi chạy chương trình, nhưng kiểu dữ liệu của biến thì không thay đổi trong suốt chương trình.
  • Statement (Câu lệnh)
    Câu lệnh là một thành phần độc lập nhỏ nhất bảo chương trình phải làm gì. Một câu lệnh có thể là một khai báo biến, gán giá trị cho biến, gọi hàm… Ta nhận biết một câu lệnh được kết thúc khi gặp dấu ;.
  • Hàm
    Hay còn gọi là phương thức (method) là một khối lệnh được đặt trong cặp dấu { }. Một hàm thường thực hiện một chức năng nào đó trong chương trình nên còn được gọi là Function và có thể có hoặc không có kiểu trả về (trả về một kiểu dữ liệu hoặc trả về kiểu void).
  • API (Application Programming Interface)
    Tạm dịch là giao diện lập trình ứng dụng, là tập hợp các hàm, phương thức, giao thức , thủ tục, và công cụ, dùng để phần mềm có thể giao tiếp với hệ điều hành, hay một phần mềm, dịch vụ ứng dụng khác. Trong đó, truy xuất (hay cứ hiểu là gọi) đến một tập các hàm hay dùng là một mục đích chính của API.
    Một số API phổ biến: GoogleMap API. Facebook API, Youtube API…
  • Javadoc là gì?
    Bộ tài liệu tham khảo đi kèm với các API, được tạo ra bởi cha đẻ của Java (Sun Microsystems), nay thuộc Oracle. Khi lập trình, chúng ta thường sử dụng Javadoc để biết được các hàm có chức năng gì, tham số truyền vào, kiểu trả về là gì… Ngoài ra, trong quá trình phát triển phần mềm, việc đồng thời viết Javadoc cho phần source code mình viết ra rất được khuyến khích. Vì điều đó giúp cho việc phát triển tiếp ứng dụng bởi một người khác trở nên nhẹ nhàng hơn, hay chính bản thân các lập trình viên cũng cần đọc lại code của mình.
  • Tham số (parametter) và đối số (argument)
    Tham số là một dạng đặc biệt của biến, được sử dụng để truyền các giá trị như một đầu vào trong một phương thức. Giá trị truyền vào hàm qua tham số được gọi là đối số. Khi gọi đến một phương thức có tham số, ta buộc phải truyền vào đối số cho các tham số đó.
  • Access modifier (Mức truy cập)
    Là một keyword thiết lập khả năng truy xuất đến một class, một phương thức hay một biến…trong sourcecode. Có 4 mức access modifier: public, protected, private, default. Ý nghĩa và cách dùng của các modifier này sẽ được trình bày chi tiết ở các bài sau.
  • Class và main method
    Class là đơn vị đóng gói nhỏ nhất trong Java (xem thêm mục Hướng đối tượng trong Java). Mọi câu lệnh, hàm đều được đặt trong class. Một chương trình có thể chứa nhiều class. Class chứa hàm main() được thực thi trước tiên. Khởi chạy một chương trình đồng nghĩa với việc bạn đang thực thi class đó, tuần tự từ trên xuống dưới, bắt đầu từ hàm main() cho đến khi hàm main() kết thúc hoặc phát sinh lỗi trong quá trình compile time, runtime. Hàm main() có cấu trúc không đổi:

    public static void main(String[] args){
    // Your code here.
    }
  • Compile time và Runtime
    Vòng đời của một ứng dụng Java (Java Application Life Cycle) gồm 2 khoảng thời gian Compile time (thời gian compiler biên dịch mã nguồn thành mã máy) và Runtime (khoảng thời gian thực thi mã máy) được mô tả cụ thể ở hình dưới đây:

    *Các bài viết và source code trên blog thuộc sở hữu của S-lighting, các bạn coppy và sử dụng vui lòng ghi nguồn http://s-lightning.com/