Đầu tiên, bạn phải có một môi trường lập trình Java. Có rất nhiều môi trường như vậy, nhưng đơn giản nhất, và chính thống nhất thì có Java Developer’s Kit (JDK) của Sun. Hãy vào java.sun.com để download.
Sau đó, bạn cài đặt JDK, và set up path information của máy tính để có thể tìm thấy javac và java.
Khi chạy thì trên command promt, gõ lệnh, ví dụ:
javac HelloDate.java
Nếu không có lỗi thì tiếp tục:
java HelloDate
Khi lập trình với Java, bạn cũng nên có một IDE (editor). Ở đây tôi dùng JCreator.
Thường thì, khi bạn tạo ra một class, bạn chỉ chỉ ra object thuộc class đó trông như thế nào, có những hành vi gì. Bạn chưa thật sự có bất cứ thứ gì cho đến khi bạn tạo ra một instance của class đó. Chỉ khi đó thì vùng lưu trữ cho data mới được tạo và method mới có hiệu lực.
Tuy nhiên, có hạn chế khi: 1. bạn chỉ muốn có một vùng lưu trữ cho một loại dữ liệu thôi, không phụ thuộc vào số object được tạo ra, 2. bạn muốn có những method không gắn liền với object cụ thể nào cả, method mà có thể gọi ngay khi chưa tạo ra object nào cả. Để khắc phục hạn chế này, hãy sử dụng từ khóa static
Để làm cho một field hay method trở thành static, chỉ đơn giản đặt từ khóa static lên trước khai báo của nó.
Ví dụ:
class StaticTest { static int i = 47; }
Bây giờ, nếu bạn tạo ra 2 object s1, s2 thuộc class trên thì nó vẫn chia sẻ chung một vùng lưu trữ i. Tức là s1.i và s2.i là cùng 1 giá trị.
Để chỉ một biến static, có thể thông qua object như thông thường hoặc thông qua chính class.
Với static method cũng như vậy. Ví dụ:
class StaticFun { static void incr() { StaticTest.i++; } }
Ta có thể gọi hàm incr() từ object thuộc class StaticFun, hoặc từ chính class StaticFun.
Điểm khác nhau: static, khi áp dụng với field thì sẽ thay đổi hoàn toàn cách lưu trữ data, một bên là chỉ một vùng cho mỗi class, một bên là một vùng cho mỗi non-static object. Còn khi áp dụng với method, tác dụng lớn nhất của nó là có thể gọi method mà không cần phải tạo object, điều này rất quan trọng ví dụ như khi định nghĩa main() method.
Đầu tiên, phải ghi nhớ một điều hết sức quan trọng khi lập trình với Java: Everything is an object.
Mặc dù bạn treat mọi thứ đều như object, nhưng thực tế cái bạn làm việc với lại là reference đến object đó. Cũng có thể có trường hợp reference không chỉ đến object nào cả. Ví dụ như thế này, ta khai báo:
String s;
Thì ta mới chỉ định nghĩa reference s còn chưa chỉ ra s refer đến object nào. Ta phải khai báo tiếp, chẳng hạn:
String s = "asdf";
Nhưng đây là cách khai báo chỉ dùng riêng cho đối tượng String thôi (có thể init bằng một đoạn text). Còn thường thì ta phải có một cách tổng quát hơn để thực hiện khởi tạo đối tượng.
Bạn phải nhớ điều tiếp theo: You must create all the objects
Bằng cách sử dụng từ khóa new
Ví dụ:
String s = new String("asdf");
Đến đây, ta sẽ tạm chuyển sang nói về một vấn đề khác:Where storage lives?
Có 6 vị trí để lưu data:
1. Registers: nơi lưu trữ nhanh nhất, nằm trong bộ vi xử lý. Nhưng số lượng rất rất hạn chế
2. The stack: nằm trong RAM, rất nhanh, chỉ sau registers thôi. Chứa các object refences.
3. The heap: vùng nhớ đa năng, nằm trong RAM, là nơi chứa tất cả các Java objects
4. Static storage:
5. Constant storage:
6. Non-RAM storage:
Có trường hợp đặc biệt là kiểu dữ liệu nguyên tố (primitive types). Thay vì tạo ra một biến bằng cách sử dụng new, một biến được tự động tạo ra mà không phải là reference. Biến này sẽ lưu giá trị và được đặt vào trong stack, hiệu quả hơn nhiêu.
Điều tiếp theo mà bạn cần ghi nhớ:You never need to destroy an object.
Ta thấy khi ví dụ như reference ra khỏi scope của nó thì sẽ mất, tuy nhiên object vẫn không mất đi theo. Vậy lúc đó phải làm cách nào để object không ở mãi trong bộ nhớ, mặc dù reference đến nó đã hết hiệu lực? Câu trả lời là một chức năng của ngôn ngữ Java là garbage collector, theo dõi các object được tạo ra bằng từ khóa new và xem có object nào không còn được tham chiếu nữa, để giải phóng bộ nhớ cho object mới.
Khi muốn tạo một loại (type) các object thì làm thế nào? Ta sử dụng từ khóa class và định nghĩa type như sau:
class ATypeName { /* Class body goes here */ }
sau đó ta khai báo các fields và methods của lớp này.
- Fields: Một field được định nghĩa là một object mà ta có thể giao tiếp với nó thông qua reference của nó. Nó cũng có thể là một trong số các primitive types (ko phải reference). Nếu field là một reference thì ta phải khởi tạo để reference đó liên kết với object thực (trong một hàm constructor). Khi primitive types là một thành phần của class, nếu không khởi tạo nó thì nó sẽ nhận một giá trị mặc định được quy định sẵn, nhưng tốt nhất là bạn nên khởi tạo rõ ràng các biến của mình.
- Methods: “a way to do something”. Sẽ đề cập cụ thể sau.
Nói chung là, có thể coi một chương trình trong Java là một tập hợp các object với các method, sử dụng các object khác làm argument, và gửi message đến các object khác.
Trước hết, ta cần hiểu cơ chế client/server:
Ý tưởng chính là có một nơi chứa được coi là một kho chứa dữ liệu (database ), mong muốn chia sẻ cho một số lượng machine hay người nào đó. Kho dữ liệu này có thể được sửa đổi, thêm bớt… nhưng mọi sự thay đổi phải được phản ánh tới tất cả các machine truy xuất đến nó. Kho chứa dữ liệu, software dùng để phân phát dữ liệu, và machine chứa database và software này, hơp lại thì ta gọi là server. Software nằm trong remote machine, thực hiện việc nhận, xử lý, display thông tin nhận được từ server, gọi là client.
Trước đây, có một vấn đề là thường thì, mỗi khi client cần phải thực hiện một thao tác nào đó cần programming, nó đều phải gửi thông tin về server để yêu cầu xử lý. Phương pháp này có nhược điểm là, vắt kiệt công suất của server, tăng hao tốn băng thông, trong khi đó thì không tận dụng được sức mạnh của client. Vì thế, người ta đã cải tiến bằng cách, tích hợp thêm khả năng chạy các chương trình (trong web browser) ở phía client. Phương pháp này gọi là client-side programming. Các phương pháp tiếp cận gồm có:
Plugins: Thêm các tính năng mới vào trong web browser
Scripting languages: JavaScript, VBScript, Tcl/Tk. Có thể giải quyết đến 80% các vấn đề gặp phải trong client-side programming. Nhược điểm là code sẽ visible với mọi người.
Java: gồm 2 thành phần là Applet và Java WebStart. Applet là một chương trình nhỏ chạy trong web browser. Chương trình này chạy được ở mọi môi trường, chỉ cần web browser có cài đặt Java interpreters. Nó có ưu điểm hơn Scripting language là nó ở dạng compiled, nên không sợ lộ source code. Tuy nhiên, dung lượng của nó lại lớn hơn nhiều so với scripting language. Về mặt bảo mật, thì Applet đảm bảo bảo mật bẳng cách chỉ chạy trong sandbox, nơi check xem Applet có thực hiện ghi hay xóa file trên đĩa hay không. Nên nói chung, Applet là khá an toàn đối với người sử dụng. Nếu muốn bảo mật hơn nữa, thì có tể sử dụng applet digital sign.
Còn Java WebStart là môi trường đê thực hiện các chương trình ko cần web browser để chạy. Cũng để phục vụ cho client-side programming.
Server-side programming:
Truyền thống thì, người ta hay sử dụng các ngôn ngữ như Perl, Python, C++ để tạo ra các CGI programs dùng để xử lý các request từ phía client. Bên cạnh đó, hiện nay có thêm Java-based web server, cho phép thực hiện tất cả programming trên Java, bẳng cách viết các chương trình gọi là Serverlet, và JSP.
Hom nay, khong hieu sao phan vung Windows tu dung bien mat, mac du moi lan thi no’ tu dong xuat hien trong Ubuntu. Minh` co’ search qua mang mot chut, thi thay bai nay ap dung kha tot, nen copy ve day vay
Link goc’: http://www.cyberciti.biz/faq/mounting-windows-partition-onto-ubuntu-linux/
Q. How do I mount NTFS or FAT paritions under ubuntu Linux?
A. You can mount NTFS or FAT windows partition with mount command.
=> Click on Applications
=> Select Accessories
=> Select Terminal
=> Now terminal window will be on screen.
First you need to create directory where you can attach windows partition using mount command (for example /media/c for C:):# sudo mkdir -p /media/cNow find out list of partition (click on System > Administration > Disks ) or use following command:# sudo fdisk -l
Output:
Device Boot Start End Blocks Id System /dev/hdb1 * 1 2432 19535008+ 86 NTFS /dev/hdb2 2433 2554 979965 82 Linux swap / Solaris /dev/hdb3 2555 6202 29302560 83 Linux
As you see /dev/hdb1 is NTFS partition. Now type following command:# sudo mount -t ntfs -o nls=utf8,umask=0222 /dev/hdb1 /media/cTo unmount Windows NTFS partition type command:# sudo umount /media/cTo mount FAT partition type command:# sudo mkdir -p /media/d
# sudo mount -t vfat -o iocharset=utf8,umask=000 /dev/hda1 /media/d
To unmount Windows FAT (mounted at /media/d) partition type command:# sudo umount /media/d
Where,
- -t : Specify file system type (such as NTFS or FAT)
- umask=VALUE: Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process. The value is given in octal.
- iocharset=VALUE: Character set to use for converting between 8 bit characters and 16 bit Unicode characters. The default is iso8859-1. Long filenames are stored on disk in Unicode format.