Có rất nhiều bạn đang rất phân vân khi không biết chọn hướng nào, có bạn đã định
hướng trước là chọn Java nhưng nghe nói .NET hay quá cũng phân vân, có bạn chọn .NET rồi
nhưng lại thấy tiếc, có bạn muốn chọn cả hai thì sợ mình kham không nổi. Bản thân tôi cũng đã
từng gặp phải hoàn cảnh như vậy, nhưng khi đọc qua một số bài viết trên một diễn đàn IT thì tôi
mới ngộ ra được nhiều điều. Tôi nghĩ bài viết này cũng rất có ích cho nhiều bạn trẻ khi mới tập
tành học lập trình
5 trang |
Chia sẻ: oanh_nt | Lượt xem: 1447 | Lượt tải: 0
Nội dung tài liệu Java hay .NET? Một bài toán nan giải của nhiều Newbie, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Java hay .NET? Một bài toán nan giải của nhiều Newbie
Ngày 27/03/2011
(JSOFT) - Có rất nhiều bạn đang rất phân vân khi không biết chọn hướng nào, có bạn đã định
hướng trước là chọn Java nhưng nghe nói .NET hay quá cũng phân vân, có bạn chọn .NET rồi
nhưng lại thấy tiếc, có bạn muốn chọn cả hai thì sợ mình kham không nổi. Bản thân tôi cũng đã
từng gặp phải hoàn cảnh như vậy, nhưng khi đọc qua một số bài viết trên một diễn đàn IT thì tôi
mới ngộ ra được nhiều điều. Tôi nghĩ bài viết này cũng rất có ích cho nhiều bạn trẻ khi mới tập
tành học lập trình …
Cám ơn các tác giả có nickname YHT và davidex về bài phân tích khá chi tiết này.
Bài viết này không nhằm vào mục đích so sánh khía cạnh kỹ thuật giữa hai công nghệ J2EE và .NET
mà sẽ đi vào phân tích xem bạn nên chọn hướng nào và tại sao.
Khi so sánh giữa sinh viên đại học và sinh viên ở các trung tâm đào tạo (điển hình là ở Đại học Bách
khoa và học viện CNTT NIIT Vietnam) chúng ta thường hay nhắc sinh viên đại học được học nhiều kiến
thức nền tảng trong khi sinh viên NIIT lại học chuyên về những công nghệ mới. Sinh viên NIIT khi ra
trường có khả năng đáp ứng yêu cầu công việc nhanh nhưng lại chậm thích ứng với những công nghệ
mới trong khi sinh viên đại học thì đa phần là ngược lại (dùng từ đa phần vì trong môi trường nào cũng
có kẻ mạnh kẻ yếu cả). Sở dĩ có chuyện này vì các bạn ở NIIT quen cách học 1+1=2 nên khi ra trường
có người bảo 1+1=0 nhớ 1 thì các bạn ú ớ không làm việc được và phải mất một khoảng thời gian khá
lâu để có thể thích nghi. Các bạn quen với lối mòn là dạy gì học đấy, không dạy không học, quen với
cách học là thầy dạy phải theo sách, phải gạch gạch tô tô trong sách mới được, khi giảng một phần nào
ngoài sách lúc đó không chịu ngồi nghe để hiểu mà loay hoay tìm coi nó nằm ở phần nào trong sách để
gạch. Khi giảng viên cung cấp tài liệu đọc thêm có nghĩa là những tài liệu đó đã được sàng lọc cẩn thận
thế mà tỉ lệ các bạn đọc nó là rất ít (đọc thôi chứ chưa quan tâm đến chuyện hiểu nó).
Có một lần tôi tình cờ đọc được câu “chúng ta học cách chạy xe chứ không phải học cách chạy cái xe
cụ thể nào cả” ở một blog của ai đó, suy nghĩ lại cũng hay. SV đại học họ được học quá nhiều môn nền
tảng cần thiết như Cấu trúc dữ liệu, Phân tích thiết kế giải thuật, Phân tích thiết kế hệ thống,…trong khi
SV NIIT cứ mải mê chạy theo công nghệ mới. Thế giới công nghệ đâu chỉ có Java hay .NET, nó còn có
PHP, còn có Python, Perl, Ruby rồi còn cả C, C++ , Assembly nữa cơ, nếu bạn học chạy chiếc xe Java
sau này có chiếc xe “tay ga” JaJava thì bạn có tự tin là mình chạy tốt không? SV Đại học giống như họ
học nguyên tắc chung để chạy xe sau đó họ TỰ tìm cho mình một chiếc xe phù hợp với mình nhất và
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
họ chạy, sau này thế giới có ra đời loại xe mới thì anh ta có thể điều khiển nó một cách không quá khó
khăn. Thế còn trong NIIT thì sao? Trong NIIT các bạn lại an tâm rằng mình chỉ cần học cách chạy chiếc
Java cá tính hay chiếc .NET sang trọng là được rồi, mấy xe khác không quan tâm.
Quay lại vấn đề chọn hướng nào, tôi xin đưa ra một vài quan điểm chủ quan của mình về hai công nghệ
này. Công nghệ nào cũng có cái hay của nó cả, người mạnh mặt này, kẻ mạnh mặt kia, đối với ứng
dụng này thì công nghệ này là phù hợp, ứng dụng khác lại khác, đối với khách hàng này thì nên chọn
cái này trong khi khách hàng khác thì ngược lại. Thế nếu tôi chỉ biết về một công nghệ thì tôi làm sao có
khả năng chọn lựa đây? Bạn sẽ hỏi ngược lại, nếu cái gì tôi cũng học hết thì làm sao tôi chịu nổi đây
(không xét trên khía cạnh tài chính)? Cái quan trọng là sức bạn đến mức nào thôi!
Nếu bạn chật vật với những bài project cuối mỗi học kỳ, bạn phải chạy xin người này xin người kia, bạn
rất yếu trong việc tìm hiểu một cái mới thì tôi nghĩ .NET là sự chọn tốt nhất. Bởi vì theo quan điểm của
“dân .NET”, theo Microsoft (MS) cái gì cũng dễ cả, có sẵn hết rồi, kéo kéo 1 tí cũng ra cái ứng dụng,
thậm chí làm cái Outlook không quá 3 ngày mà (nếu biết kết hợp các component có sẵn). Không phải
không có lý khi nói như vậy vì công nghệ của MS là công nghệ “đóng” nên tất cả đều theo chuẩn của
MS, mà cái Windows thì đi đâu cũng thấy nên dễ dàng tiếp cận cũng đúng. Làm việc thì bám theo một
IDE (Visual Studio), theo đúng một mô hình MS đưa ra nên học sao làm vậy, nhanh ơi là nhanh. .NET
cũng có những công nghệ, framework khác tuy nhiên chúng ít được ưa chuộng, ví dụ NHibernate,
NStruts… Đã chọn .NET thì đừng hỏi tôi là chọn VB.NET hay C#, cái nào cũng được cả và NIIT dùng
VB.NET để dạy phần đầu của .NET.
Thế theo Java (J2EE) thì sao? Nếu bạn yêu thích đam mê tìm tòi, bạn có khả năng tìm hiểu tốt một kỹ
thuật mới, bạn không ngại gian khổ ở bước đầu tiên thì bạn hãy chọn hướng Java. Nói gian khổ có quá
không? Cái chính là công nghệ Java có một lô các công nghệ khác đi theo nó mà bạn phải tìm hiểu như
là JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI… rồi lại đi đâu cũng nghe framework này framework kia
như Struts 1, Struts 2, Spring, WebWork, JSF, Hibernate, TopLink, …tiếp đến là chọn tool nào phát triển
đây: Eclipse, Netbeans, JBuilder, IDEA, Sun Java Studio, Oracle JDeveloper… rồi chọn web server nào
để triển khai đây Websphere, WebLogic, JBoss, Tomcat…. Bạn bảo .NET design giao diện nhanh
nhưng bạn có biết thế giới Java còn có WindowBuilder, có Visual Editor, có Swing Designer, có
Matisse? Bạn bảo tool .NET làm web nhanh thế bạn đã dùng MyEclipse chưa? Bạn bảo .NET nhiều thư
viện thế bạn dùng Commons chưa? Bạn cho rằng ứng dụng Java chạy chậm thế bạn có biết Java 6 đã
cải tiến nhiều về tốc độ không?bạn có biết rằng thế giới Java đâu chỉ có AWT, Swing mà còn có SWT
không? Thế giới Java có một rừng công nghệ con trong đó, nên để tìm hiểu cho vững Java thôi bạn có
thể tốn cả cuộc-đời-lập-trình của mình rồi đấy!
Nếu bạn đang phân vân không biết chọn hướng nào và bạn thật sự giỏi thì tôi khuyên bạn hãy chọn cả
hai hướng. Nghiên cứu nhiều hướng không bao giờ thừa cả. Tuy nhiên cùng một lúc bạn không thể học
hai hay nhiều hướng vì dễ dẫn đến “tẩu hoả” bạn hãy chọn cho mình một hướng đi và hãy tìm hiểu nó
cho thật thật kỹ vào, khi đã vững một công nghệ rồi thì bạn có thể bay sang những công nghệ khác để
tìm hiểu. Nếu bạn cứ mải mê chạy theo công nghệ mới thì chắc bạn sẽ phải chạy suốt đời mà chẳng
làm được gì cho ra hồn cả. Công nghệ thay đổi hàng ngày, hàng giờ nên bạn đang học 1 thế giới đã ra
đời 100 cái mới rồi. Bạn chỉ cần nắm những cái cốt lõi nhất sau đó tha hồ mà bay nhảy, dù có cho ra
JaJava hay dotdotNet bạn cũng không sợ vì bạn đã xây cái móng vững chắc rồi! Ví dụ tôi chưa từng
được học VB6 nhưng khi có một chương trình nào đó bắt buộc làm bằng VB6 tôi chỉ cần tìm vài tài liệu
về nó sau đó làm vài demo nho nhỏ là có thể bắt tay vào làm chương trình được rồi. Đương nhiên trình
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
độ về VB6 của tôi không bằng những người đã nghiên cứu nó từ lâu nhưng những gì tôi học được ở
công nghệ khác sẽ giúp tôi tiếp cận và làm việc được trên VB6 dễ dàng.
Có ý kiến cho rằng Java bảo mật hơn .NET, tôi không bàn về khía cạnh sâu bên trong kiến trúc mà tôi
muốn triển khai ý bảo mật ở đây là thế nào. Nói đến bảo mật có nhiều dạng, nhiều lớp, bạn nói Java
bảo mật hơn là muốn đề cập ở mức nào? Nếu ngôn ngữ đó bảo mật nhưng người lập trình code ẩu thì
liệu nó có bảo mật không? Bạn đừng nói với tôi là hệ thống bạn có một Firewall tốt, một IDS thông
minh, một con PIX của Cisco mới mua hàng ngàn đô là bảo mật hơn hệ thống của tôi, bảo mật hay
không do tài của bạn điều khiển các công cụ của hệ thống bạn kìa! Bạn có biết hệ thống có thể bị tấn
công ở nhiều lớp khác nhau?nếu bạn bảo mật được lớp ứng dụng liệu các lớp khác có an toàn không?
Nhiều người có quan điểm rất cực đoan, theo .NET là chê thậm tệ Java, không thèm tìm hiểu gì về nó
hoặc ngược lại. Tôi thì không đồng tình với quan điểm này, đã là dân kỹ thuật thì không từ bỏ một công
nghệ nào hay cả, mình không học nổi hết thì cũng nên xem coi nó là cái gì để mở mang tầm mắt của
mình. Một quan điểm cực đoan như vậy sẽ chẳng có gì gọi là hay cả và nó chỉ có hại cho bạn mà thôi.
Nếu xét về cơ hội việc làm thì sao? .NET dễ kiếm việc hơn Java hay ngược lại? bạn có biết vừa rồi
PSV có đợt tuyển ào ạt các chuyên viên J2EE không? .NET cũng vậy, cơ hội có việc làm là ngang
nhau, cái chính vẫn là khả năng của bạn. Bạn giỏi rồi thì dù là Assembly bạn cũng có đất dụng võ!
Trong chương trình J2EE ở NIIT không thể dạy được tất cả, khi bạn học theo hướng này thì giảng viên
sẽ cố gắng chỉ các bạn những phần cốt lõi nhất sau đó sẽ phụ đạo thêm về các công nghệ như JSF,
Struts, JPA, Hibernate,… để bạn có thể thích ứng nhanh với công việc sau này.
Nếu quyết định chọn J2EE hay .NET rồi thì các bạn cũng nên tìm các tài liệu về các môn cơ sở ở đại
học để tìm hiểu nhằm nâng cao kiến thức của mình. Hãy biết quý trọng khoảng thời gian bạn đi học để
đầu tư nghiên cứu cho tốt. Thời điểm này chưa phải là lúc bạn phải chạy tới chạy lui tìm việc làm thêm
nếu như gia đình bạn có khả năng tài chính đủ để nuôi bạn ăn học, hãy tập trung vào việc học 100%.
Hy vọng qua bài viết này bạn sẽ chọn được cho mình một định hướng phù hợp. Dù bạn chọn hướng
nào tôi cũng xin lưu ý bạn là hãy theo hướng đó tới cùng, đừng chạy qua chạy lại cuối cùng sẽ không
được gì đâu. Chúc các bạn thành công!
(Theo YHT – Forums.2it.in)
Làm một cái so sánh nho nhỏ giữa Java và .NET:
Ưu điểm:
.NET:
- Dễ phát triển, tools hỗ trợ cực tốt (Visual Studio)
- Phát triển giao diện rất dễ dàng trên Windows.
- Làm việc tốt với tất cả các công nghệ khác của Microsoft (COM, DCOM)
JAVA:
- Kiến trúc thiết kế rất tốt.
- Cộng đồng mạnh, do là công nghệ mở -> nhiều công nghệ hay ho xuất hiện từ cộng đồng (Vd:
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
Hibernate, Spring…)
- Chạy tốt trên nhiều platform khác nhau (nhất là trên linux).
Nhược điểm:
.NET:
- Chỉ chơi tốt với “hàng” của Microsoft.
- Mã nguồn đóng, tuy các thiết kế, specification là mở (nên mới có cái Mono)
- “Làm giùm” người lập trình quá nhiều -> tạo ra những lập trình viên theo đúng “chuẩn” của Microsoft
(thông thường sẽ khác chỗ này, chỗ kia so với chuẩn còn lại của thế giới).
- Muốn can thiệp sâu vào kiến trúc bên dưới hơi bị khó.
- Tuy đã có Mono Project cho Linux, nhưng các application viết bằng .NET hầu như chỉ chạy tốt trên hệ
điều hành của Microsoft.
- Phải trả tiền cho Microsoft để phát triển (cái này có lẽ ko phải là một nhược điểm ở Việt Nam
JAVA:
- Khó phát triển hơn, nhất là việc debug.
- Tools hỗ trợ không mạnh bằng, đơn giản, miễn phí thì chẳng ai lo chăm chút tất cả cho bạn được.
- Có vẻ như tốc độ chậm hơn các chương trình .NET
- Bảo mật source code không tốt bằng .NET.
Nói chung theo kinh nghiệm cá nhân, khi cần phát triển một phần mềm chủ yếu chạy trên hệ điều hành
Windows, tui sẽ sử dụng .NET, vì việc phát triển sẽ rất nhanh và dễ dàng. Ngược lại, nếu phát triển một
ứng dụng lớn (cỡ Enterprise) và cần hoạt động trên nhiều platform khác nhau thì sẽ sử dụng Java. Tuy
khó phát triển hơn, nhưng nhờ kiến trúc thiết kế rất tốt, sẽ làm cho khả năng hoạt động ổn định và khả
năng mở rộng cao hơn.
Một người lập trình giỏi sẽ ko thiên về hẳn một công nghệ nào, mà biết hài hòa tận dụng theo nhu cầu
của mình.
(Theo davidex – www.ddth.com)
Từ khóa: Java, dotNet
Các bài viết mới hơn
Lịch học tuần từ 16/05/2011 - 13/05/2011
Tổng quan về J2EE - tiếp cận phát triển - 25/04/2011
Tổng quan về J2EE - 25/04/2011
Web “nội” điêu đứng vì thiếu đầu tư bảo mật - 25/04/2011
Bkis: 100% ngân hàng điện tử hổng bảo mật - 25/04/2011
Những lỗ hổng của mạng ngân hàng - 25/04/2011
Cuộc chiến giữa JAVA và DotNET, bạn chọn bên nào? - 27/03/2011
Các bài viết đã đưa
Master Data Management and Cloud Computing - 18/03/2011
Lean service architectures with Java EE 6 - 18/03/2011
Java EE 7 specification gets unanimous approval - 18/03/2011
Oracle releases Java mobile development framework - 18/03/2011
Google releases full Android 3.0 SDK - 18/03/2011
Lịch học từ Tuần 12/ 2011 (cập nhật...) - 16/03/2011
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
Lịch học Tuần 9-10-11/ 2011 - 26/02/2011
Lịch học Tuần 8/ 2011 - 17/02/2011
Lịch học Tuần 7/ 2011 - 13/02/2011
Watch out Java, here comes JavaScript - 29/01/2011
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
Các file đính kèm theo tài liệu này:
- java_hay_dotnet_mot_bai_toan_nan_giai_cua_nhieu_newbie.pdf