Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Wednesday, April 27, 2016

Bài tập lập trình hướng đối tượng với Java (Số 5)

//Họ Tên: Trần Văn Linh
//MaSV:581597
//Lớp:K58QLTT

Đề:
Thư viện của trường đại học KHTN có nhu cầu cần quản lý việc mượn sách. Sinh viên đăng ký và tham
gia mượn sách thông qua các thẻ mượn mà thư viện đã thiết kế.
- Với mỗi thẻ mượn, có các thông tin sau: số phiếu mượn , ngày mượn, hạn trả , số hiệu sách, và các thông tin riêng về mỗi sinh viên đó.
- Các thông tin riêng về mỗi sinh viên đó bao gồm: Họ tên, MSV, ngày sinh, lớp.
1. Hãy xây dựng lớp SinhVien để quản lý các thông tin riêng về mỗi sinh viên.
2. Xây dựng lớp TheMuon để quản lý việc mượn sách của mỗi đọc giả.
3. Xây dựng các phương thức để nhập và hiện thị các thông tin riêng cho mỗi sinh viên
4. In ra danh sách sinh viên, tên sách mượn cần trả vào ngày cuối tháng

--------------------------------------------------------------------------------------------------------------------------

 Giải:
//Lớp SinhVien
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
public class SinhVien
{
    private String hoTen;
    private String mSV;
    private Date ngaySinh;
    private String lop;
 
    public SinhVien()
    {
     
    }
    public SinhVien(String hoTen,String mSV,Date ngaySinh,String lop)
    {
        this.hoTen=hoTen;
        this.mSV=mSV;
        this.ngaySinh=ngaySinh;
        this.lop=lop;
    }
    public void nhapThongTin() throws Exception
    {
        Scanner sc=new Scanner(System.in);
        System.out.print("Nhap ho ten: ");
        this.hoTen=sc.nextLine();
        System.out.print("Nhap ma sinh vien :");
        this.mSV=sc.nextLine();
        System.out.print("Nhap ngay sinh(dd-MM-yy):");
        String ns=sc.nextLine();
        DateFormat df=new SimpleDateFormat("dd-MM-yy");
        this.ngaySinh= df.parse(ns);
        System.out.print("Nhap lop: ");
        this.lop=sc.nextLine();
    }
    public void hienThongTin()
    {
        System.out.println("Ho va ten: "+this.hoTen);
        System.out.println("Ma sinh vien: "+this.mSV);
        System.out.println("Ngay sinh: "+this.ngaySinh);
        System.out.println("Lop : "+this.lop);
    }
 
    public String getHoTen()
    {
        return this.hoTen;
    }
    public String getMSV()
    {
        return this.mSV;
    }
    public Date getNgaySinh()
    {
        return this.ngaySinh;
    }
    public String getLop()
    {
        return this.lop;
    }
}
//Lớp TheMuon
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.ArrayList;
import java.io.PrintWriter;
public class TheMuon
{
    private int sPMuon;
    private Date ngayMuon;
    private Date ngayTra;
    private String soHieuSach;
    private SinhVien sv;
    public TheMuon()
    {
        
    }
    public TheMuon(int sPMuon,Date ngayMuon,Date ngayTra,String soHieuSach,SinhVien sv)
    {
        this.sPMuon=sPMuon;
        this.ngayMuon=ngayMuon;
        this.ngayTra=ngayTra;
        this.soHieuSach=soHieuSach;
        this.sv=sv;
    }
    
    public void nhapThongTin() throws Exception
    {
        this.sv=new SinhVien();
        this.sv.nhapThongTin();
        Scanner sc=new Scanner(System.in);
        System.out.print("Nhap so phieu muon:");
        this.sPMuon=sc.nextInt();
        sc.nextLine();
        System.out.print("Nhap so hieu sach: ");
        this.soHieuSach=sc.nextLine();
        this.ngayMuon=new Date();
        System.out.print("Nhap ngay tra:(dd-mm-yy): ");
        String ngt=sc.nextLine();
        DateFormat df=new SimpleDateFormat("dd-MM-yy");
        this.ngayTra=df.parse(ngt);
    }
    public int getNgayTra()
    {
        return this.ngayTra.getDate();
    }
    public void hienThongTin()
    {
        sv.hienThongTin();
        System.out.println("Ten sach tra: "+this.soHieuSach);
    }
  
    public static void main(String[] args) throws Exception
    {
        ArrayList<TheMuon> ds=new ArrayList<TheMuon>();
        Scanner sc=new Scanner(System.in);
        int dem=0;
        char c;
        do
        {
            System.out.println("Nhap thong tin the muon thu "+(dem+1)+" :");
            TheMuon tg=new TheMuon();
            tg.nhapThongTin();
            ds.add(tg);
            dem++;
            System.out.print("Co muon nhap nua khong (Y/N): ");
            c=sc.nextLine().charAt(0);
        }while(c=='y'||c=='Y');
        System.out.println("=============================================");
        for(int i=0;i<ds.size();i++)
            if(ds.get(i).getNgayTra()==30)
                ds.get(i).hienThongTin();
    }
    
}

Bài tập lập trình hướng đối tượng với Java (số 3)

//Họ Tên: Trần Văn Linh
//MaSV:581597
//Lớp:K58QLTT

Đề:
Để quản lý hồ sơ học sinh của trường THPT, người ta cần quản lý những thông tin như sau:
- Các thông tin về : lớp, khoá học, kỳ học, và các thông tin cá nhân của mỗi học sinh.
- Với mỗi học sinh, các thông tin cá nhân cần quản lý gồm có: Họ và tên, ngày sinh, quê quán.
1. Hãy xây dựng lớp Nguoi để quản lý các thông tin cá nhân của mỗi học sinh.
2. Xây dựng lớp HSHocSinh (hồ sơ học sinh) để lý các thông tin về mỗi học sinh.
3. Xây dựng các phương thức : nhập, hiển thị các thông tin về mỗi cá nhân.
4. Cài đặt chương trình thực hiện các công việc sau:
- Nhập vào một danh sách gồm n học sinh ( n- nhập từ bàn phím)
- Hiển thị ra màn hình tất cả những học sinh sinh năm 1985 và quê ở Thái Nguyên
- Hiển thị ra màn hình tất cả những học sinh của lớp 10A1

Giải
//Lop Nguoi
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Nguoi
{
    private String hoTen;
    private Date ngaySinh;
    private String queQuan;
 
    public Nguoi()
    {
        this.ngaySinh=new Date();
    }
    public Nguoi(String hoTen,Date ngaySinh,String queQuan)
    {
        this.hoTen=hoTen;
        this.ngaySinh=ngaySinh;
        this.queQuan=queQuan;
    }
 
    public void nhapThongTin()
    {
        Scanner sc=new Scanner(System.in);
        System.out.print("Nhap ho ten: ");
        this.hoTen=sc.nextLine();
        System.out.print("Nhap ngay sinh (dd-mm-yyyy): ");
        String ns=sc.nextLine();
        this.ngaySinh=chuyenStringDate(ns);
        System.out.print("Nhap que quan: ");
        this.queQuan=sc.nextLine();
    }
    public void hienThongTin()
    {
         System.out.println("Ho va ten: "+this.hoTen);
         System.out.println("Ngay Sinh: "+this.ngaySinh);
         System.out.println("Que quan: "+this.queQuan);
    }
    public Date chuyenStringDate(String str)
    {
        Date ns=null;
        SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
        try
        {
            ns=sdf.parse(str);
        }catch(Exception e)
        {
            System.out.println("Loi dinh dang ngay thang.!");
        }
        return ns;
    }
    public String getQueQuan()
    {
        return this.queQuan;
    }
    public Date getNgaySinh()
    {
        return this.ngaySinh;
    }

}
//lớp HSHocSinh
import java.util.Scanner;
import java.util.Date;
public class HSHocSinh extends Nguoi 
{
    private String lop;
    private String khoaHoc;
    
    public HSHocSinh ()
    {
        
    }
    public HSHocSinh(String hoTen,Date ngaySinh,String queQuan,String lop,String khoaHoc)
    {
        super( hoTen, ngaySinh, queQuan);
        this.lop=lop;
        this.khoaHoc=khoaHoc;
    }
    
    public void nhapThongTin()
    {
        super.nhapThongTin();
        Scanner sc=new Scanner(System.in);
        System.out.print("Nhap ten lop: ");
        this.lop=sc.nextLine();
        System.out.print("Nhap khoa hoc: ");
        this.khoaHoc=sc.nextLine();
    }
    public void hienThongTin()
    {
        super.hienThongTin();
        System.out.println("Lop: "+this.lop);
        System.out.println("Khoa hoc: "+this.khoaHoc);
    }
    
    public String getLop()
    {
        return this.lop;
    }
}
//Lớp Test

import java.util.ArrayList;
import java.util.Scanner;
public class Test
{
   public static void main(String[] args) throws Exception
   {
       ArrayList<HSHocSinh> ds;
       int n;
       Scanner sc=new Scanner(System.in);
       try
       {     
           System.out.print("Nhap so luong hoc sinh: ");
           n=sc.nextInt();
           sc.nextLine();
        }catch(Exception e)
        {
            n=1;
        }
       String tl=null;
       ds=new ArrayList<HSHocSinh>(n);
       HSHocSinh b=new HSHocSinh();
       while(true)
       {
           b.nhapThongTin();
           ds.add(b);
           System.out.print("Ban co muon nhap nua khong (c/k): ");
           tl=sc.nextLine();
           if(tl.equalsIgnoreCase("k"))
                break;
       }
       for(int i=0;i<n;i++)
       {
           System.out.println("--------------------");
           ds.get(i).hienThongTin();
           System.out.println("--------------------");
       }
       
       System.out.println("Nhung sinh vien que o thai nguyen va sinh nam 1985 la: ");
       for(int i=0;i<n;i++)
           if((ds.get(i).getNgaySinh().getYear()-1900==1985) && (ds.get(i).getQueQuan().equalsIgnoreCase("Thai Nguyen")))
                ds.get(i).hienThongTin();
        
       System.out.println("Nhung sinh vien hoc lop 10A1 la: ");
       for(int i=0;i<ds.size();i++)
            if(ds.get(i).getLop().equalsIgnoreCase("10A1"))
                ds.get(i).hienThongTin();
    }
}

Bài tập lập trình hướng đối tượng với java (Số 2)

Đề:
Để quản lý khách hàng đến thuê phòng trọ của một khách sạn, người ta cần quản lý những thông tin sau:
- Số ngày trọ, loại phòng trọ, giá phòng, và các thông tin cá nhân về mỗi khách trọ.
- Với mỗi cá nhân, người ta cần quản lý các thông tin : Họ và tên, ngày sinh, số chứng minh thư nhân dân.
1. Hãy xây dựng lớp Nguoi để quản lý thông tin cá nhân về mỗi cá nhân
2. Xây dựng lớp KhachSan để quản lý các thông tin về khách trọ.
3. Viết các phương thức : nhập, hiển thị, xóa các thông tin về một khách trọ,
4. Cài đặt chương trình thực hiện các công việc sau:
- Nhập vào một dãy gồm n khách trọ ( n - nhập từ bàn phím)
- Hiển thị ra màn hình thông tin về các cá nhân hiện đang trọ ở khách sạn đó.
- Tính số tiền cần phải trả nếu một khách hàng trả phòng trọ (căn cứ vào số CMND để tìm kiếm trong mảng)

//Lop Nguoi
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Nguoi
{
   private String hoTen;
   private Date ngaySinh;
   private String soCMND;
   public Nguoi()
   {
     
   }
   public Nguoi( String hoTen,Date ngaySinh,String soCMND)
   {
       this.hoTen=hoTen;
       this.ngaySinh=ngaySinh;
       this.soCMND=soCMND;
   }
   public void nhapThongTin(Scanner sc)
   {
       System.out.print("Nhap ho va ten khach hang: ");
       this.hoTen=sc.nextLine();
       System.out.println("Nhap ngay sinh(dd-mm-yyyy): ");
       String ns=sc.nextLine();
       this.ngaySinh=chuyenStringDate(ns);
       System.out.print("Nhap so chung minh nhan dan: ");
       this.soCMND=sc.nextLine();
   }
   public void hienThongTin()
   {
       System.out.println("Ho va Ten: "+this.hoTen);
       System.out.println("Ngay sinh: "+this.ngaySinh);
       System.out.println("So chung minh nhan dan: "+this.soCMND);
   }
   public Date chuyenStringDate(String str)
   {
       Date ns=null;
       SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
       try
       {
           ns=sdf.parse(str);
       }
       catch(Exception e)
       {
          System.out.println("Loi dinh dang thoi gian.!");
       }
       return ns;
   }
   public String getSoCMND()
    {
        return this.soCMND;
    }
}

//lop Khach San
import java.util.Scanner;
import java.util.Date;
public class KhachSan 
{
    private int soNgaytro;
    private String loaiP;
    private double giaP;
    Nguoi nguoi;
    
    public KhachSan()
    {
        
    }
    public KhachSan(int soNgaytro, String loaiP,double giaP, Nguoi nguoi)
    {
        this.soNgaytro=soNgaytro;
        this.loaiP=loaiP;
        this.giaP=giaP;
        this.nguoi=nguoi;
    }
    
    public void nhapThongTin(Scanner sc)
    {
        nguoi=new Nguoi();
        this.nguoi.nhapThongTin(sc);
        System.out.print("Nhap so ngay tro: ");
        this.soNgaytro=sc.nextInt();
        sc.nextLine();
        System.out.print("Nhap loai phong tro: ");
        this.loaiP=sc.nextLine();
        System.out.print("Nhap gia phong: ");
        this.giaP=sc.nextDouble();sc.nextLine();
    }
    public void hienThongTin()
    {
        nguoi.hienThongTin();
        System.out.println("So ngay tro: "+this.soNgaytro);
        System.out.println("Loai phong: "+this.loaiP);
        System.out.println("Gia phong: "+this.giaP);
    }
    public double thanhTien()
    {
        return this.soNgaytro*this.giaP;
    }
    
    public Nguoi getKhach()
    {
        return this.nguoi;
    }
    public void xoa()
    {
        this.nguoi=new Nguoi();// xoa thong tin ve nguoi
        this.soNgaytro=0;
        this.loaiP=null;
        this.giaP=0;
    }
}
//Lớp test
import java.util.Scanner;
import java.util.ArrayList;
public class Test
{
    public static void main(String[] args)
    {
             Scanner sc=new Scanner(System.in);
          ArrayList<KhachSan> ds;
          int n;
          
          System.out.print("Nhap so luong khach tro: ");
          n=sc.nextInt();sc.nextLine();
          
          ds=new ArrayList<KhachSan>(n);
          KhachSan b;
          for(int i=0;i<n;i++)
          {
              b=new KhachSan();
              b.nhapThongTin(sc);
              ds.add(b);
          }
          System.out.println("Danh sach khach tro: ");
          for(int i=0;i<ds.size();i++)
             ds.get(i).hienThongTin();
          String tim;
          System.out.print("Nhap so chung minh nhan dan cua khach hang can thanh toan: ");
          tim=sc.nextLine();
          for(int i=0;i<ds.size();i++)
            if(ds.get(i).getKhach().getSoCMND().equalsIgnoreCase(tim))
                 System.out.println("Tien phai thanh toan: "+ds.get(i).thanhTien());
 }
}


Bài lập trình hướng đối tượng về Java (Số 1)

//Họ Tên: Trần Văn Linh
//MaSV:581597
//Lớp:K58QLTT

Đề :

   Để quản lý các hộ dân trong một khu phố, người ta quản lý các thông tin như sau:
- Với mỗi hộ dân, có các thuộc tính:
+ Số thành viên trong hộ ( số người)
+ Số nhà của hộ dân đó. ( Số nhà được gắn cho mỗi hộ dân)
+ Thông tin về mỗi cá nhân trong hộ gia đình.
- Với mỗi cá nhân, người ta quản lý các thông tin như: họ và tên, ngày  sinh, nghề nghiệp.
1. Hãy xây dựng lớp Nguoi để quản lý thông tin về mỗi cá nhân.
2. Xây dựng lớp KhuPho để quản lý thông tin về các hộ gia đình.
3. Viết các phương thức nhập, hiển thị thông tin cho mỗi cá nhân.
4. Cài đặt chương trình thực hiện các công việc sau:
- Nhập vào một dãy gồm n hộ dân (n - nhập từ bàn phím).
- Hiển thị ra màn hình thông tin về các hộ trong khu phố năm nay có người mừng thượng thọ (80 tuổi)

--------------------------------------------------------------------------------------------------------------------------

      Giải:

//Lớp Người
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Nguoi
{
    private String hoTen;
    private Date ngaySinh;
    private String ngNghiep;
    
    public Nguoi()
    {
    }
    public Nguoi(String hoTen,Date ngaySinh,String ngNghiep)
    {
        this.hoTen=hoTen;
        this.ngaySinh=ngaySinh;
        this.ngNghiep=ngNghiep;
    }
    
    public void nhapThongTin(Scanner sc)
    {
        System.out.print("Nhap ho ten: ");
        this.hoTen=sc.nextLine();
        System.out.print("Nhap ngay sinh theo dinh dang dd-MM-yyyy: ");
        String ns=sc.nextLine();
        this.ngaySinh=chuyenStringDate(ns);
        System.out.print("Nhap nghe nghiep: ");
        this.ngNghiep=sc.nextLine();
    }
    public Date chuyenStringDate(String ngay)
    {
        SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
        Date ns=null;
        try
        {
            ns=sdf.parse(ngay);
        }catch(Exception e)
        {
            System.out.println("Loi dinh dang thoi gian.!");
        }
        return ns;
    }
    public void hienThongTin()
    {
        System.out.println("Ho va ten: "+this.hoTen);
        System.out.println("Ngay sinh: "+this.ngaySinh);
        System.out.println("Nghe nghiep: "+this.ngNghiep);
    }
    public Date getNgaySinh()
    {
        return this.ngaySinh;
    }
   
}
//Lớp Hộ Dân
import java.util.Scanner;
import java.util.Date;
public class HoDan
{
   private int soTVien;
   private int soNha;
   private Nguoi[] thanhVien;
   
   public HoDan()
   {
       this.thanhVien=new Nguoi[10];
   }
   public HoDan(int soTVien,int soNha,Nguoi[] thanhVien)
   {
       this.soTVien=soTVien;
       this.soNha=soNha;
       this.thanhVien=thanhVien;
   }
   
   public void nhapThongTin(Scanner sc)
   {
       System.out.print("Nhap so thanh vien: ");
       this.soTVien=sc.nextInt();
       System.out.print("Nhap so nha: ");
       this.soNha=sc.nextInt();sc.nextLine();
       for(int i=0;i<n;i++)
       {
           System.out.println("Nhap thong tin thanh vien thu "+(i+1)+": ");
           thanhVien[i]=new Nguoi();
           thanhVien[i].nhapThongTin(sc);
       }
   }
   public void hienThongTin()
   {
       System.out.println("So nha: "+this.soNha);
       System.out.println("So thanh vien: "+this.soTVien);
       for(int i=0;i
       {
           System.out.println("Thanh vien thu "+(i+1)+": ");
           thanhVien[i].hienThongTin();
       }
   }
   public Nguoi[] getThanhVien()
   {
       return this.thanhVien;
   }

//Lớp khu phố
import java.util.Scanner;
import java.util.ArrayList;
public class KhuPho
{
    private HoDan[] dsHoDan;
    private int n;
    
    public void nhapHoDan(Scanner sc)
    {
        System.out.print("Nhap so ho dan can nhap: ");
        this.n=sc.nextInt();sc.nextLine();
        this.dsHoDan=new HoDan[n];
        for(int i=0;i<n;i++)
        {
            System.out.println("Nhap thong tin dan thu "+(i+1)+": ");
            this.dsHoDan[i]=new HoDan();
            this.dsHoDan[i].nhapThongTin(sc);
        }
    }

    public static void main(String[] args)
    {
        KhuPho ql=new KhuPho();
        Scanner sc=new Scanner(System.in);
        ql.nhapHoDan(sc);
        System.out.println("Nhap nam mung tho: ");
        int nam=sc.nextInt();
        ql.mungTho(nam);
    }
    public void mungTho(int nam)
    {
        Nguoi thanhVien[]=null;
        boolean a=false;
        int soTvien;
        int b;
        for(int i=0; i<n;i++)
        {
            b=0;
            thanhVien=dsHoDan[i].getThanhVien();
            soTvien=thanhVien.length;
                while(soTvien!=0)
                {
                    if((nam-thanhVien[b].getNgaySinh().getYear()-1900)>=80)
                    {
                         a=true;
                         break;
                    }
                    soTvien--;
                    b++;
                }
             if(a==true)
                dsHoDan[i].hienThongTin();
         }
   }

}

Tuesday, April 26, 2016

10 Lý do để học ngôn ngữ lập trình Java và tại sao Java là tốt nhất

10 Lý do để học ngôn ngữ lập trình Java và tại sao Java là tốt nhất





Học lập trình ngôn ngữ Java tốt nhất
Theo chỉ số TIOBE thì Java là ngôn ngữ được sử dụng nhiều nhất hiện nay.
Java là một ngôn ngữ lập trình phổ biến. Điều này được chứng minh thực tế trong suốt 20 năm qua.
Hai thập kỷ không phải là một thời gian ngắn cho bất kỳ một ngôn ngữ lập trình nào, và Java đã khẳng định được sức mạnh từng ngày. Dù có những lúc, Java phát triển chậm lại, nhưng nó đã thích ứng tốt. Trước đó, với thay đổi cơ bản về hình thức Enum, Generics, và autoboxing trong Java 5, cải thiện hiệu suất với Java 6, và việc Google lựa chọn ngôn ngữ Java để phát triển ứng dụng Android, Java vẫn giữ vị trí là ngôn ngữ lập trình tiên phong.
Nhiều sinh viên thường hỏi tôi rằng “Ngôn ngữ lập trình nào là tốt nhất mà chúng ta nên tìm hiểu, tôi có nên học Java...?”. Vâng, điều đó phụ thuộc vào định nghĩa ngôn ngữ lập trình tốt nhất của bạn, nếu xét về độ phổ biến thì rõ ràng Java vượt trội so với bất cứ ngôn ngữ nào khác, thậm chí cả C, dù C đã tồn tại trong gần 41 năm (1972). Nếu xét về cơ hội việc làm, một lần nữa Java lại ghi điểm với mọi ngôn ngữ khác. Bạn có thể tìm thấy vô số cơ hội việc làm bằng việc học ngôn ngữ lập trình Java, bạn có thể phát triển Java cơ bản cho các ứng dụng phía máy chủ, các ứng dụng Web và các ứng dụng doanh nghiệp, và thậm chí có thể áp dụng cho việc phát triển ứng dụng di động dựa trên nền tảng Android. Vì vậy, nếu bạn chưa học ngôn ngữ lập trình C và C++, và muốn tìm hiểu ngôn ngữ lập trình đầu tiên, tôi khuyên bạn nên chọn Java. Trong bài viết này, tôi sẽ chia sẻ những lý do tại sao bạn nên học lập trình Java.
Đây là 10 lý do mà tôi luôn nói với bất cứ ai hỏi ý kiến tôi về việc học Java, và liệu Java là ngôn ngữ lập trình tốt nhất ở các khía cạnh cơ hội việc làm, phát triển các ứng dụng và hỗ trợ cộng đồng.

1. Java rất dễ tìm hiểu

Nhiều người sẽ ngạc nhiên khi thấy điều này là một trong những lý do hàng đầu để học Java, hoặc coi nó như là ngôn ngữ lập trình tốt nhất, nhưng đó là sự thật. Nếu bạn học cấp tốc, sẽ rất khó để hoàn thành trong khoảng thời gian ngắn, đó là ví dụ xảy ra với hầu hết các dự án chuyên nghiệp. Java có cú pháp rõ ràng với chú thích nhỏ đi kèm, ví dụ Generics với dấu ngoặc nhọn chứa kiểu dữ liệu làm cho việc đọc và học chương trình Java trở nên dễ dàng và nhanh chóng. Một khi lập trình viên đã quen thuộc với những rào cản ban đầu như cài đặt JDK và thiết lập PATH và hiểu phương thức hoạt động của Classpath thì họ có thể viết chương trình trong Java rất dễ dàng.

2. Java là một ngôn ngữ lập trình hướng đối tượng

Một lý do khác khiến Java phổ biến bởi vì nó là một ngôn ngữ lập trình hướng đối tượng. Phát triển OOPS (Object-Oriented Programming System – hệ thống lập trình hướng đối tượng) dễ dàng hơn nhiều, và nó cũng duy trì mô-đun hệ thống, linh hoạt và mở rộng. Một khi bạn có kiến thức về định nghĩa OOPS như sự trừu tượng, đóng gói, đa nhiệm và thừa kế, bạn có thể sử dụng chúng trong Java. Bản thân Java là hiện thân của nhiều phương pháp tư duy tốt nhất và các mẫu thiết kế trong các thư viện của nó. Java là một trong số ít ngôn ngữ lập trình đạt tới gần 100% OOPS. Java cũng thúc đẩy việc sử dụng các nguyên tắc SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion – một dạng thiết kế hướng đối tượng) và thiết kế hướng đối tượng theo hình thức dự án mã nguồn mở như Spring, mà chắc chắn rằng đối tượng phụ thuộc của bạn được quản lý tốt bằng việc sử dụng nguyên lý Injection (một lý thuyết trong thiết kế phần mềm).

3. Số lượng hàm dùng sẵn (API function) của Java hết sức phong phú

Một lý do khác mang lại thành công lớn cho ngôn ngữ lập trình Java là nó nhiều API. Quan trọng nhất là nó rất dễ nhìn, bởi vì nó xuất hiện cùng với việc cài đặt Java. Khi tôi bắt đầu lập trình Java, tôi viết mã cho các Applet và thời đó Applet là một giải pháp cho các hiệu ứng hoạt hình tuyệt vời, điều đó mang lại sự ngạc nhiên cho những lập trình viên mới như chúng tôi, những người đang sử dụng mã nguồn trong Turbo C++. Java cung cấp API cho I/O (giao tiếp dữ liệu), mạng, tiện ích, XML, phân tích cú pháp, kết nối cơ sở dữ liệu, và gần như tất cả mọi thứ. Những điều còn lại được chứa trong các thư viện mã nguồn mở như Apache, Google Guava và một số chương trình khác.

4. Các công cụ phát triển mạnh mẽ như Eclipse, Netbeans

Có thể bạn không tin, nhưng Eclipse và Netbeans đã đóng vai trò rất lớn trong việc làm cho Java trở thành một trong những ngôn ngữ lập trình tốt nhất. Viết mã trong IDE là niềm vui, đặc biệt nếu bạn đã từng viết mã trong hệ điều hành DOS Editor hoặc Notepad. Chúng không chỉ giúp hoàn thành mã mà còn cung cấp khả năng sửa lỗi mạnh mẽ, điều đó là cần thiết trong môi trường lập trình thực tế. Môi trường phát triển tích hợp (IDE) giúp cho việc phát triển Java dễ dàng hơn, nhanh và thuận tiện hơn. Tìm kiếm, tổ chức lại mã và đọc mã bằng IDE. Ngoài IDE, nền tảng Java cũng có một số công cụ khác như Maven và ANT để dịch và đóng gói ứng dụng Java, dịch ngược mã, JConsole, Visual VM để giám sát bộ nhớ Heap…

5. Bộ sưu tập thư viện mã nguồn mở phong phú

Thư viện mã nguồn mở đảm bảo rằng Java có thể được sử dụng ở khắp mọi nơi. Apache, Google, và các tổ chức khác đã đóng góp rất nhiều thư viện lớn, giúp Java phát triển dễ dàng hơn, nhanh hơn và tiết kiệm chi phí. Có những cấu trúc như Spring, Struts, Maven đảm bảo sự phát triển Java theo phương pháp xây dựng phần mềm tốt nhất, thúc đẩy sử dụng các mẫu thiết kế và hỗ trợ lập trình viên Java hoàn thành công việc. Tôi luôn luôn khuyên bạn nên tìm kiếm một chức năng cần viết bằng Google trước khi viết mã riêng của bạn. Đó là cơ hội tốt bởi vì nó phần nhiều đã được viết, kiểm tra và có sẵn để sử dụng.

6. Hỗ trợ cộng đồng tuyệt vời

Cộng đồng là sức mạnh lớn nhất của ngôn ngữ lập trình Java và nền tảng này. Một ngôn ngữ dù tốt thế nào đi nữa cũng sẽ không thể tồn tại nếu không có cộng đồng hỗ trợ, giúp đỡ và chia sẻ kiến thức. Java đã rất may mắn, nó có rất nhiều diễn đàn hoạt động, StackOverflow, tổ chức mã nguồn mở và một số nhóm người sử dụng Java giúp đỡ lẫn nhau. Cộng đồng các lập trình viên Java có thâm niên và thậm chí cả các chuyên gia sẽ giúp đỡ người mới bắt đầu. Java thực sự thúc đẩy việc thu nhận kiến thức và đóng góp hỗ trợ lại cộng đồng. Rất nhiều lập trình viên, những người sử dụng mã nguồn mở, tham gia vào xây dựng, nâng cấp mã mở, kiểm thử,… Các chuyên gia tư vấn miễn phí tại nhiều diễn đàn Java và StackOverflow. Điều tuyệt vời này đã mang lại tự tin cho những lập trình viên Java.

7. Java là miễn phí

Ai cũng thích những thứ miễn phí phải không nào, còn bạn? Vì vậy, nếu một lập trình viên muốn học một ngôn ngữ lập trình, hoặc một tổ chức muốn sử dụng một công nghệ, chi phí là một yếu tố quan trọng. Vì Java là miễn phí ngay từ đầu, tức là bạn không cần phải trả bất cứ khoản chi phí nào để tạo ra các ứng dụng Java. Chính điều này cũng giúp Java trở thành kỹ năng thông dụng trong cộng đồng lập trình viên, và các tổ chức lớn. Sự dồi dào lập trình viên Java là một lợi thế lớn, làm cho các tổ chức dễ dàng lựa chọn Java cho chiến lược phát triển.

8. Hỗ trợ tài liệu xuất sắc – Javadocs

Lần đầu tiên thấy Javadoc, tôi đã rất ngạc nhiên. Đó là tài liệu chứa nhiều thông tin về Java API. Tôi nghĩ rằng nếu không có tài liệu Javadoc thì Java sẽ không được phổ biến, và đó là một trong những lý do chính để tôi nghĩ rằng Java là ngôn ngữ lập trình tốt nhất. Không phải ai cũng có thời gian và ý định xem xét mã để tìm hiểu phương pháp làm hoặc làm thế nào để sử dụng một lớp. Javadoc làm cho việc học dễ dàng và cung cấp một tài liệu tham khảo tuyệt vời trong khi viết mã Java. Với sự xuất hiện của IDE, bạn thậm chí không cần phải nhìn Javadoc một cách rõ ràng trong trình duyệt mà bạn đã có thể nhận được tất cả thông tin trong cửa sổ IDE của bạn.

9. Java là nền tảng độc lập

Trong năm 1990, đây là lý do chính khiến Java phổ biến. Ý tưởng về nền tảng độc lập là rất tuyệt, và slogan của Java “viết một lần chạy mọi nơi” đã đủ sức lôi kéo để thu hút rất nhiều sự phát triển mới trong Java. Điều này vẫn còn là một trong những lý do để Java là ngôn ngữ lập trình tốt nhất, hầu hết các ứng dụng Java được phát triển trong môi trường Windows và chạy trên nền tảng UNIX.

10. Java có mặt ở khắp mọi nơi

Vâng, Java có ở khắp mọi nơi, trên máy tính để bàn, trên điện thoại di động, trên thẻ, gần như ở khắp mọi nơi và lập trình viên Java cũng vậy. Tôi nghĩ rằng số lượng lập trình viên Java vượt xa lập trình viên bất kỳ ngôn ngữ lập trình chuyên nghiệp khác. Dù không có bất kỳ dữ liệu để làm sáng tỏ nhận định ấy, kinh nghiệm đã chỉ cho tôi điều đó. Số lượng lớn lập trình viên Java hiện nay cũng là một lý do mà các tổ chức muốn chọn Java cho những phát triển mới hơn bất kỳ ngôn ngữ lập trình khác.
Có thể nói rằng, lập trình là lĩnh vực rất rộng và nếu bạn nhìn vào C và UNIX, chúng vẫn còn sống và ngày càng mạnh mẽ hơn, đủ để sống thêm 20 năm nữa, Java cũng không hề thua kém. Có nhiều cuộc thảo luận về lập trình chức năng (functional programming), Scala và ngôn ngữ JVM khác, nhưng chúng cần phải đi một chặng đường dài để tương thích với cộng đồng, các nguồn lực và phổ biến của Java. Rất tiếc lập trình hướng đối tượng cũng là một trong những mô hình lập trình tốt nhất, và miễn là nó tồn tại thì Java sẽ vẫn còn vững chắc.

Nguồn :https://techmaster.vn/posts/3967/hoc-ngôn-ngữ-lập-trình-java-tốt-nhất