Archive for August, 2014

Google Guice

Trong Java, khi nhắc đến IoC (Inversion of Control) và DI (Dependency Injection) hầu hết mọi người sẽ nghĩ ngay đến Spring Framework, một framework khá nổi tiếng và đang rất được yêu thích trong cộng đồng Java. Ngoài Spring, có 2 framework cũng được mọi người hay nhắc đến là PicoContainer và Google Guice. Hiện tại mình đang làm việc trên Magnolia CMS, một CMS đang phát triển và sử dụng Google Guice trong kiến trúc của nó. Magnolia sử dụng Guice cùng với một số các mẫu thiết kế hướng đối tượng (Design Patterns), tạo nên một kiến trúc module hóa rất hay. Khi nào có thời gian rảnh và lối hành văn tốt hơn ? mình sẽ nói về tầng bên dưới của Magnolia CMS.

Hiện tại Guice đang ở phiên bản 3.0, nhưng mình dịch bài user’s guide của nó là 1.0 vì bài viết khá đơn giản và dễ hiểu giúp các bạn mới tiếp xúc với DI framework nắm bắt dễ dàng hơn. Nếu các bạn muốn tìm hiểu về phiên bản hiện tại của Guice thì theo đường dẫn https://github.com/google/guice/wiki/GettingStarted, Guice đã đưa cả source và user’s guide từ Google Code sang Github.

Một số từ khóa nên biết trước: 

IoC (Inversion of Control)

DI (Dependency Injection)

Singleton Pattern

Factory Pattern

Mock – http://www.mockobjects.com/

Trong bài có khác nhiều từ mình không dịch, các bạn tham khảo giúp mình tại đây

http://toando.coffee/terminology/

Bài gốc: http://google.github.io/guice/user-docs/Guice-1.0-Users-Guide.pdf

Continue reading →

115 câu phỏng vấn Java

Bài gốc: http://www.javacodegeeks.com/2014/04/java-interview-questions-and-answers.html

Phỏng vấn vẫn là vấn đề rất nhiều bạn ra trường khá sợ và thiếu tự tin, sợ và thiếu tự tin một phần chủ yếu do thiếu rất nhiều kiến thức nền tảng, chưa sẵn sàng cho những kiến thức mà mình đang có. Đọc qua những câu phỏng vấn về một vấn đề bạn quan tâm cũng là một cách học khá hay, bạn sẽ biết mình đang thiếu mảng kiến thức nào, cần trao dồi thêm mảng nào, để khi phỏng vấn bạn tự tin hơn với lượng kiến thức mình mang theo. Mong rằng bài dịch sẽ mang một lượng kiến thức nhỏ cho các bạn sinh viên đã hoặc sắp ra trường. Mình thấy những câu trả lời ở dưới khá chung chung và chưa có độ sâu nhất định, khi đã đọc xong cả câu hỏi và câu trả lời mà bạn vẫn còn mơ hồ, hãy tìm hiểu thêm thật rõ về vấn đề đó, đừng để mình bị thiếu hay nghĩ sai về một vấn đề, vì nhiều lúc câu dịch của mình không diễn tả đủ ý tác giả muốn truyền đạt.

Trong bài hướng dẫn này, chúng ta sẽ cùng nhau thảo luận về một vài loại câu hỏi thường hay được sử dụng trong phỏng vấn, nhằm giúp các bạn kiểm tra và củng cố lại kiến thức Java của mình, cùng với lập trình hướng đối tượng.

Xuyên suốt bài viết, chúng ta cùng thảo luận về lập trình hướng đối tượng, những câu hỏi tổng quát liên quan đến Java và những chức năng của nó, tập hợp(collections) trong Java, bộ dọn rác (garbage collectors), ngoại lệ (exception handling), Java applets, Swing, JDBC, Remote Method Invocation (RMI), Servlets and JSP …

Mục lục:

  1. Object Oriented Programming (OOP)
  2. General Questions about Java
  3. Java Threads
  4. Java Collections
  5. Garbage Collectors
  6. Exception Handling

Java Applets, Swing, JDBC, Remote Method Invocation (RMI), Servlets, JSP

Continue reading →

10 nguyên lý trong thiết kế hướng đối tượng

Bài gốc : http://javarevisited.blogspot.sg/2012/03/10-object-oriented-design-principles.html

Chú thích của mình : Trước khi vào bài gốc mọi người lướt sơ qua bài này : What does “S” stands for in OOPS?

Những nguyên lý thiết kế hướng đối tượng (object oriented desing principle) là nền tảng trong lập trình hướng đối tượng, nhưng tôi thấy hầu hết các lập trình viên Java ra sức học các design patterns (Các mẫu thiết kế hướng đối tượng) như Singleton pattern, Decorator pattern hay Observer pattern nhưng không đặt sự chú ý của mình vào nghiên cứu Phân tích và thiết kế hướng đối tượng(Object oriented analysis and design). Điều quan trọng trong việc học nền tảng cơ bản của lập trình hướng đối tượng là Abstraction (Tính trừu tượng), Encapsulation(Tính đóng gói), Polymorphism(Tính đa hình) và Inheritance(Tính kế thừa),  nhưng đồng thời, việc quan trọng không kém là phải biết những nguyên lý của những tính chất cơ bản này, tạo ra một thiết kế trong sáng và có tính module hóa. Tôi thường xuyên gặp các lập trình viên Java ở nhiều cấp độ khác nhau, có những người chưa từng nghe nói về OOPS và nguyên lý thiết kế SOLID, hay đơn giản họ không biết lợi ích của việc đưa ra các nguyên lý thiết kế đối tượng đặc thù, hay làm thế nào sử dụng các nguyên lý thiết kế này vào việc viết mã lệnh.

Continue reading →