Học Java level 01

Đây là bài viết được chuyển tiếp qua từ blog 360 của mình => http://blog.360.yahoo.com/blog-1sjlb_klcq5pCC1u7o5g5p2kESY-?cq=1

Biết Java là một ngôn ngữ mạnh và hay từ lâu rồi, nó nổi tiếng với khẩu hiệu “Write once, run everywhere” mà nhưng hok có thời gian để đeo đuổi em này (hihi). Bây giờ mặc dù rất bận rộn với việc học nhưng mình sẽ cố gắng tìm hiểu nó, chủ yếu là biết thôi chứ đi sâu vào thì e không có nhiều time cho lắm. Lúc trước định nghiên cứu cái nào cho xong cái đó nhưng nghỉ lại mình đi không đúng phương pháp. Đi theo cách của mình giống như học một môn nào đó thì học cho hết rồi mới chuyển sang môn khác, như vậy thì trong khoảng thời gian dài mà chỉ biết được có một thứ trong khi đó người ta biết rất nhiều thứ rồi mặc dù người ta ko đi sâu bằng mình (huhu sao ngu vậy nè). Bây giờ hok dài dòng nữa (hix nói một mình mà cũng dài dòng nữa nè hihi) vào vấn đề chính đây.

Yêu cầu :
Trước tiên để học và nắm bắt Java được nhanh chúng ta cần phải biết “Lập trình Hướng đối tượng” <= cái này quan trọng lắm, ai theo ngành IT trước sao j cũng phải biết cái này.
Môi trường và IDE:

  • J2SE <= đây là JDK, có cái này thì mới biên dịch và chạy Java được. Tải tại http://www.sun.com.
  • Eclipse, NetBeans, TextPad <= là các IDE dành cho Java. Xài cái nào thì tùy nhưng trước tiên nên xài notepad để gõ code, tiếp đó là xài TextPad và sau cùng chọn Eclipse hay NetBeans thì tùy theo sở thích của từng người.

Thiết lập biến môi trường (trong Win XP):
Phải thiết lập để có thể gọi Java biên dịch bất cứ nơi đâu. Ai không biết thì cứ làm theo từ từ sẽ biết thôi (hihi). Thiết lập nè : Right Click vào My Computer -> Properties -> Advanced -> Environment Variables. Chon User Variable, chọn biến Path, thêm vào “;C:\j2sdk1.x\bin” (nếu cài ổ khác thì thay đổi đường dẫn cho đúng nghe, không có dấu ngoặc kép, và có dấu ; (chấm phẩy), 1.x là phiên bản java tương ứng).

Bây giờ vào phần hấp dẫn nè, ah` mà bạn đã có mấy thứ trên kia chưa, nếu chưa thì sắm cho đầy đủ đi nhé. Như khi học các ngôn ngữ khác, chúng ta sẽ bắt đầu làm quen với Java thông qua ví dụ Hello World nhé. Mở Notepad lên nào gõ code bên dưới vào đi :

public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello World”);
}
}

Sau đó lưu lại với tên là HelloWorld.java (tên file giống tên lớp) và lưu vào ổ C cho dể biên dịch nhé nhé <= lưu ý là Java phân biệt chử hoa và thường nhé. Bây giờ bắt đầu biên dịch nào : Start -> Run -> cmd gõ cd\ rồi enter cho nó về ổ C nào. Tiếp gõ javac HelloWorld.java rồi enter coi có lổi không, ko thì ok. Tiếp theo chạy chương trình nè : Gõ tiếp java HelloWorld nếu xuất hiện Hello World là thành công rồi đấy.

Mình xin kết thúc level 01 ở đây, hok biết là level 02 sẽ chừng nào mới publish nhưng cũng sẽ sớm thôi. Ở các level sau mình không hướng dẫn chi tiết như thế này đâu vì rất mất thời gian với lại mình cũng là newbie mà. Level này mình hướng dẫn chi tiết vì mình biết có rất nhiều bạn ban đầu khi cài đặt và biên dịch ko thành công thì đâm ra rất nản và ko thích java, nhất là ở chổ cài đặt biến môi trường á, ví dụ như bạn cài đặt java ở ổ D và không thiết lập biến môi trưởng thử coi, rất khó biên dịch lắm đó <= cái này bị rồi nên biết :) . Qua level này nếu có ai cũng đang học và cũng là newbie giống mình thì chúng ta cùng học và trao đổi nhé, ah còn lưu ý này nữa. Mỗi level chỉ là những phần cô động những gì mình tìm hiểu thôi, đôi tìm hiểu thì nhiều nhưng share lại thì có giới hạn mong rằng chúng ta ai đang học java thì phải vận động thật nhiều vào nha.

Chúc thành công ở level 01 này – tihonphysics (2nCuiMia)

Java cho người mới bắt đầu

Bài viết sưu tầm tại CUSC.CTU.EDU.VN link

Vậy bài viết này dành cho ai: những bạn mới học lập trình năm 1 học kỳ 2 (giống như mình nè ^^, sắp khai giảng roài), hay những bạn bước đầu học Java.

- Trước tiên nói ngắn gọn Java có 3 phần:
+ J2SE (Java 2 Standard Edition): Lập trình ứng dụng Desktop.
+ J2EE (Java 2 Enterprise Edition): Lập trình server.
+ J2ME (Java 2 Micro Edition): Lập trình ứng dụng cho thiết bị di động.

- Bạn nên học J2SE trước. Vậy chúng ta cần chuẩn bị gì:

1. Trước tiên bạn cần 1 bản JDK 5.0 (Java Development Kit). Bạn có thể download tại: http://java.sun.com/j2se (tùy theo hệ điều hành của bạn) (nhớ down bản bình thường ko kèm theo NetBeans (http://netbeans.org) cho nhẹ)

2. Khi cài JDK 5.0 thì nó sẽ cài vào máy của bạn 2 gói:
+ J2SE Development Kit 5.0 : Đây là gói công cụ, các CT biên dịch, thư viện class, mã nguồn 1 số chương trình Java đơn giản….
+ J2SE Runtime Environment 5.0: Hiểu 1 cách đơn giản thì gói này sẽ giúp chạy được các chương trình viết bằng Java.

3. Quá trình cài đặt JDK 5.0 diễn ra bình thường, bạn không cần phải cấu hình bất cứ phần nào. Ok, vậy là bạn đã cài xong JDK 5.0. Tiếp theo Bạn vào thư mục đã cài JDK 5.0, bạn sẽ thấy có 1 file “src.zip”, file này chứa source các ví dụ về Java. Bạn tạo 1 folder mới tên “src” sau đó giải nén toàn bộ các file trong “src.zip” vào đó.

4. Tiếp theo bạn cần document về Java, document này sẽ trình bày rất chi tiết toàn bộ các class, method… của Java. Đây là phần rất quan trọng, bạn có thể down ở đây: http://java.sun.com/docs

5. Tiếp theo, bạn cần 1 Development Environment (môi trường phát triển), nói cụ thể là 1 chương trình bạn dùng để phát triển các ứng dụng Java. Nó sẽ giúp nhiều hơn trong học tập, quản lý dự án, tìm lỗi, sửa lỗi, chạy thử chương trình… Mình xin giới thiệu 1 chương trình mà mình đang dùng:

+ Eclipse (Free), là 1 chương trình miễn phí, hội đủ những chức năng kể trên, rất phù hợp cho những bạn mới học hay cả những người chuyên nghiệp. Bạn có thể download tại http://eclipse.org.

+ Ngoài ra còn có 1 số chương trình khác như:
//Emacs (Free)
http://www.gnu.org/software/emacs/

//TextPad (dùng thử 30 ngày)
http://www.textpad.com

//JEdit (Free)(popular choice)
http://jedit.org

6. Vậy là bạn đã có 1 số “vốn” lận lưng để bắt đầu bước vào thế giới của Java. Vậy bạn là người mới bạn nên xem sách gì. Đối với các bạn lập trình viên, sách của khóa học ko chưa đủ, bạn cần tham khảo thêm các sách khác. Mình xin giới thiệu quyển “Core Java 2″ (dạng ebooks). Đây là sách thương mại ko phải miễn phí, trong quá trình mình tìm hiểu về Java thì có 1 bạn người nước ngoài rất tốt đã chia sẽ cho mình quyển sách này.

+ Core Java 2 là 1 quyển sách rất hay gồm 2 tập. Sách hướng dẫn rất cặn kẽ từng chi tiết, nó có điểm rất hay là luôn so sánh những điểm khác và giống nhau giữa Java và C++, đây là điểm rất hấp dẫn cho những ai đã biết C++. Sách sẽ dẫn bạn qua các phần của Java từ cơ bản đến nâng cao và luôn luôn có những đoạn code ví dụ cho từng phần.

+ Để sử dụng sách hiệu quả, bạn nên đọc hết sách không bỏ phần nào và phải theo thứ tự sách đề ra, không nên nhảy cóc. Sách còn có phần lịch sử về Java rất thú vị.

Bạn có thể down “Core Java 2″ tại đây:

+ Quyển 1: http://www.box.net/public/6qm6tehu88
+ Quyển 2: http://www.box.net/public/1up8y7jbxl (new)
7. Vậy là tất cả đã đủ cho những bước khởi đầu của chúng ta về Java, phần còn lại phụ thuộc vào bạn thôi. BYE BYE!

- Note: Những thông tin bài này ở mức tương đối.

(ZEROONEA)

Tôi học Java – Nhữ Đình Thuận

Xin được post lại bài này từ Nhữ Đình Thuận

Gần đây trên ddth.com, có một cậu kỹ sư hay cử nhân gì đó tuyên bố một khi đã học xong đại học thì họ chỉ cần mất 2-3 ngày để có thể thành thạo (một cách thuần thục) một ngôn ngữ lập trình. Và cậu ta tự nhận mình là ngu nên học hết 1 tuần. Còn tôi, hơn 3 năm trời học Java và tôi vẫn đang học Java.
Có lẽ vì là một coder, phần vì trí thông minh của mình thuộc hàng chậm phát triển lại không được đào tạo chính quy nên tôi đã học Java hết hơn 3 năm rồi và hiện tại nồi cơm của tôi là Java.
Java đúng là mênh mông thật, rất nhiều, rất nhiều công nghệ, rất nhiều giải pháp, rất nhiều những sản phẩm nguồn mở. Vì lẽ đó, nhiều coder bắt tay vào học Java thường bị choáng ngợp bởi có quá nhiều thứ để học hỏi ở Java. Vậy thì bắt đầu từ đâu nhỉ ?
Vào java.sun.com download bản JDK mới nhất và dùng một text editor để học nó. Dĩ nhiên tôi không dùng Nodepad rồi vì nó quá sơ sài. Với những người thành thạo Linux có lẽ nên dùng Vi là thứ tốt nhất, còn Windows, bản thân tôi dùng TextPad, sau khi cài đặt (JDK và TextPad) hãy mở TextPad ra gõ vào chương trình nổi tiếng và thông dụng nhất System.out “Hello World !”, nhấn crtl-1 để dịch, nhấn ctrl-2 để chạy. Thế là bạn đã bắt đầu học Java. Nên download thêm từ Java.sun.com gói java doc để có được API Specification trong quá trình học và làm việc với Java.

Một kẻ mù mờ như tôi thì điều đầu tiên là phải thành thạo ngữ pháp, do đó, tôi thường kiếm những bài nho nhỏ để viết thử cho đến khi thuần thục cú pháp Java, chẳng hạn các bài toán sắp xếp, tìm kiếm số nguyên, các bài toán quản lý điểm chẳng hạn. Mục đích duy nhất khi viết chúng là để làm quen dần với cú pháp của một chương trình Java.

Tôi không thể tìm hiểu ngay bản chất của Java là gì ? Chẳng hạn, như làm thế nào để Virtual Machine chạy một class, tại sao lại là máy ảo, bản chất của Object, điều tôi quan tâm đầu tiên là làm sao biến mình thành một cái máy gõ code Java. Tôi học như một cái máy gõ chữ vậy.

Sau khi đã thuần thục ngữ pháp Java, tôi bắt đầu đi tìm hiểu sơ đẳng những đặc điểm của một chương trình Java, chẳng hạn class, package là gì, thừa kế, interface đóng vai trò như thế nào, viết như vậy là một chương trình cấu trúc hay một hướng đối tượng. Dĩ nhiên tôi không thể hiểu rành mạch ngay được mà chỉ hiểu một chút ít. Sau khi tìm hiểu sơ sơ những vấn đề đó, tôi bắt tay vào tìm hiểu những thư viện trong Java.

Viết một cửa số bằng AWT, điều này làm tôi sung sướng vì bằng Java tôi có thể nhìn thấy kết quả của mình là một ứng dụng đồ họa nho nhỏ, tôi tìm hiểu về AWT để viết những bài tập bé bé, chẳng hạn một cửa sổ giao diện quản lý, cài đặt các action. Tuy nhiên, không nên mất nhiều thời gian vào AWT, tôi quay sang học java.lang và java.util.

Với java.lang đây là gói bao gồm rất nhiều những lớp cơ bản, String chẳng hạn, dĩ nhiên là phải làm thuần thục với string rồi ( cắt 1 string, thay thế từ, tìm vị trí từ,…) những bài tập rất nhỏ. Tiếp theo đó là StringBuffer, và ở Java 5 có một người anh em của nó là StringBuilder. Tôi hiểu sơ sơ về StringBuffer, nghĩa là chúng làm việc nhanh hơn khi nối string. Trong java.lang còn một lớp nữa là lớp Math, cũng cần tìm hiểu các hàm mà lớp này cung cấp để viết các bài tập nhỏ. Vậy là ok, tôi đã biết một số lớp cơ bản trong java.lang.

Java.util là gói tiếp theo tôi cần tìm hiểu, thử viết một bài toán về Vector, thêm bớt, xóa các thành phần, cái này giống “mảng động” quá. Sau Vector, tôi thử tìm hiểu lớp Date, in ngày tháng hiện tại, giờ giấc xem sao, tôi viết thử một chiếc đồng hồ bằng AWT có sử dụng lớp Calendar và lớp Date. Java.util còn một lớp tôi cần phải học đó là Hashtable, viết một ví dụ cho phép đặt cặp giá trị key – value vào đối tượng của lớp Hashtable. Như vậy là tôi đã xong Java.util.

Bây giờ đến một gói thứ 3, java.io. Lớp đầu tiên cần phải học trong java.io đó là File. Tạo và xóa một file, đo độ dài một file. Tất cả các hàm đều được cung cấp trong File.class và tôi chỉ cần tạo một object rồi System.out giá trị để kiểm nghiệm lại trong Java. Hai lớp tiếp theo tôi cần tìm hiểu trong java.io là FileReader và FileWriter, tôi dùng hai lớp này để đọc và ghi dữ liệu vào một file text đơn giản.

Sau khi làm việc được với java.util, tôi trở lại gói java lang để tìm hiểu một lớp nữa, đó là java thread. Dĩ nhiên tôi không thể viết một ví dụ cỏn con về thread được, thế là google, tôi muốn tìm một ví dụ đơn giản nhất của thread. Tôi gõ vào cụm từ import java.io + public void run() và thế là google trả về cả triệu kết quả cho tôi, trong một mớ hỗn độn, tôi cần tìm ra một ví dụ đơn giản về thread, okies, tôi tìm được rồi, copy và TextPad, ctrl-1 -> ctrl-2 và tôi chạy nó. Từ ví dụ này tôi viết thử các ví dụ khác về thread, và tôi bắt đầu hiểu về thread. Sau khi đã nắm tương đối về thread tôi bắt đầu thử từ khóa synchronized, tôi viết một lớp có 2 thread, trong 2 thread cùng đọc một file và phương thức đọc file có synchronized. Bây giờ tôi quay lại gói java.util để cài thử một ví dụ về ArrayList và tìm hiểu vì sao ArrayList cũng làm việc như Vector nhưng người ta lại cài những 2 lớp này. Tôi viết một ví dụ nhỏ có 2 thread cùng add dữ liệu vào 1 ArrayList và làm tương tự với Vector. Ở 2 ví dụ tôi có đo thời gian chạy, tôi dùng 1 vòng lặp while chạy 1000 lần, rồi 10000. Tôi thử rất nhiều lần như vậy thì đều thấy ArrayList add dữ liệu nhanh hơn. Bây giờ tôi tìm hiểu từ khóa try catch, tôi lại dùng Google để tìm một ví dụ về try catch, sau khi hiểu sơ sơ tôi quay sang cài đặt các ví dụ có throws Exception. Hay quá, nếu có try catch, tôi có thể thông báo những lỗi xảy ra ở chương trình của tôi và chương trình vẫn tiếp tục làm việc, nếu không dùng try catch tôi thấy chương trình gặp lỗi và đơ luôn.

Qua hàng loạt những ví dụ, tôi bắt đầu hiểu sơ sơ về lập trình hướng đối tượng, tôi tìm muốn sách lý thuyết để đọc về chúng, okies tôi đã bắt đầu hiểu java và tiếp tục tìm hiểu những thứ cần thiết cho công việc của tôi.

Java không đơn thuần là một ngôn ngữ, nó là cả một nền tảng lập trình, một cộng đồng hay một văn hóa. Với quan niệm của tôi, ai đó có thể thuần thục cú pháp trong Java nhưng hiểu hết những tư tưởng tồn tại trong Java thì có lẽ cũng phải mất từ 3-6 tháng với một người thông minh và được đào tạo rất bài bản. Khi tìm hiểu Java, người ta thường không tìm hiểu kỹ những thành phần cơ bản của Java mà học vào một framework cụ thể với tư tưởng MVC. Đối với tôi, muốn giỏi lập trình java thì hai gói đầu tiên bạn phải thuần thục là java.lang và java.util. Tôi từng được một thạc sĩ CNTT hỏi trong có Queue và Stack không,…nếu không có thì chị sẽ tự cài lấy một cái, còn nếu có thì chị dùng ngay cho nó tiện. Tôi không coi đó làm điều ngạc nhiên hoặc cũng không dám chê chị dốt hay có những ý nghĩ khác không hay bởi chị rất giỏi nên việc cài đặt những thứ đó với chị quá đơn giản, nhưng điều đó giống như việc phát minh bánh xe và rất lãng phí. Do vậy khi học Java, tôi luôn tâm niệm rằng tôi đang học cả một nền tảng chứ không phải là đang học một ngôn ngữ lập trình.

Java.util là gói tôi thích nhất, bởi từ Java.util, tôi kiểm nghiệm lại những lý thuyết về cấu trúc dữ liệu và giải thuật. Dĩ nhiên framework này không bao giờ đề cập hết được tất cả các thuật toán cũng như cấu trúc dữ liệu, nhưng tôi có thể tìm hiểu những vấn đề cơ bản ở đây rồi từ đó dùng google search thêm những đoạn code khác. Có khá nhiều những thư viện ngoài cài đặt collections framework, Apache, Trove hay FastUtil chẳng hạn. Mục đích của những thư viện này là cải thiện tốc độ của collections framework và không phải là họ không thu được kết quả gì. Điều đặc biệt hơn nữa là rất nhiều trường đại học trên thế giới cung cấp những cài đặt về cấu trúc dữ liệu và giải thuật , cũng có cái hay, cũng có cái dở. Tôi bắt đầu trả lời được một thắc mắc của mình là tại sao Java dùng merge-sort chứ không dùng quick-sort, và tại sao ở những phiên bản đầu java chậm, càng những phiên bản về sau thì càng nhanh hơn.

Gói tôi thích thứ 2 là gói java.util.concurrent , tôi tìm hiểu để thỏa mãn từ khóa synchronized và hiểu được vì sao java từng lạm dụng từ khóa này một cách quá đáng; tìm hiều các vấn đề về pooling. Tôi cố gắng thuần thục java.io với hàng loạt lớp Reader và Writer rồi mở rộng khả năng hiểu biết của bản thân với java.nio. Tôi tìm hiểu về java.net rồi kiếm sách vở về networking đọc thêm, sau đó tự cài đặt các ví dụ, chương trình đầu tiên trong cuộc đời lập trình của tôi là C2 – chat và chơi cờ qua mạng là cách để tôi tìm hiểu về java.net. Cứ như vậy, tôi học java mãi cho đến tận bây giờ.

Theo quan điểm cá nhân tôi, nếu muốn lập trình tốt java bạn cần phải thuần thục những gói sau (bao gồm cả các gói con của nó) là : java.lang (java.math, java.lang.ref
java.lang.reflect ), java.util(java.util.concurrent , java.util.logging, java.util.prefs, java.util.regex, java.util.zip ), java.io (java.nio), java.net. Một khi đã vững những vấn đề và thư viện trong đó, bạn có thể học tiếp những framework như jdbc, swing, servlet+jsp, struts, jsf, hibernate,… để phục phụ trực tiếp vào công việc. Khi học java, tốt nhất đừng dùng các IDE như JBuilder, Eclipse hay Netbean, hãy dùng một TextEditor cố gắng gõ code nhiều nhất. Cũng đừng bao giờ cố gắng hiểu cặn kẽ những tư tưởng mà người ta đã cài đặt, hãy code và chạy, lúc đó bạn sẽ chiêm nghiệm được và khi đó, cầm lại cuốn sách đọc là hiểu rành mạch nhất.

Tôi thường vào những cộng đồng trên mạng để cập nhật những vấn đề cũng như tham khảo các bài viết của họ, tôi ít khi vào java.sun.com bởi các bài viết ở đó cũng không có nhiều bài hay. Nhiều người chọn theserverside.com để cập nhật công nghệ cho mình còn tôi, tôi chọn 2 trang chủ chốt là java.net và jroller.com. Trên java.net, tôi bắt gặp rất nhiều vấn đề bao trùm cả 3 lĩnh vực j2se, j2ee và j2me, nhiều nhất vẫn là j2se. Ở đây có những bài viết rất tuyệt từ những người đang trực tiếp phát triển java hàng ngày. Còn jroller.com, một cộng đồng blogger từ nhiều nơi trên thế giới đề cập tất cả các chủ đề, khía cạnh và liên tục cập nhật. Javalobby là một diễn đàn cũng tương đối thú vị, ở đó có những tranh luận tạo nhiều góc cạnh trong cái nhìn tổng thể về một chủ đề, còn article quý báu thì lại nằm rất nhiều trên javaworld.com. Tôi có một thói quen tệ, viết code chúa ghét là chèn những dòng comment rối tung rối mù lên, khi đọc, tôi khoái đọc code hơn là đọc chứ, bởi bản thân chúng gần như toát lên hết những vấn đề đã được đề cập.Ước gì có thể dùng photoshop vẽ ra được phần mềm chứ không cần phải code.