Pages

30 thg 4, 2010

Lịch sử Adobe System

Sau nhiều tháng tò mò và phỏng đoán, Adobe cuối cùng đã cho ra mắt phiên bản mới nhất bộ hỗ trợ thiết kế nổi tiếng của họ, Creative Suite 5. Không chỉ có thêm nhiều tính năng mới, CS5 còn được làm mới toàn bộ thiết kế mặt ngoài. Chúng tôi đã liên lạc với nhóm phát triển thương hiệu Adobe để biết thêm thông tin.
Kể từ lúc xuất hiện lần đầu với vẻ ngoài giản dị trên Macintosh Plus, Adobe Photoshop mà hiện nay được gọi là Adobe Creative Suite, đã trở thành công cụ thiết yếu của hầu hết các nhà thiết kế, thay đổi mãi mãi cách thức làm việc của họ.


Năm 2010 này, Photoshop sẽ kỷ niệm 20 năm thành lập. Như bao người sử dụng chương trình thường xuyên, kể từ phiên bản 4.0, tôi luôn tò mò được biết về những cải tiến mới của phiên bản tiếp theo. Thông thường, nó là một thứ tình cảm pha trộn, giữa niềm vui khi thấy tốc độ và khả năng làm việc được nâng cao, thời gian bạn sẽ phải bỏ ra để khám phá thêm các tính năng mới, cùng tốn kém chi phí nâng cấp chương trình.
Những tính năng mới.


Đoạn video do Adobe phát hành vào thứ Hai, trình diễn nhiều tính năng và cải tiến mà mọi người mong đợi xuất hiện trong bộ Creative Suit 5. Thỏa lòng khách đợi chờ, phần giới thiệu dẫn dắt người xem như lạc vào vùng đất ảo giác mang đậm phong cách của “phù thủy” Tim Burton

Các tính năng nổi bật có thể kể đến như Mixer Brush, Content-Aware Fill, hay Puppet Warp làm người sử dụng bất ngờ ngay từ cái nhìn đầu tiên. “Trông đến là thèm !”, Greg Geisler từ công ty thiết kế Raytracer đã nói như vậy trong đoạn xuất hiện trên clip. Tuy vậy nếu tính năng “Content-Aware Fill” trong CS5 cho ra bất cứ kết quả nào giống với “Content-Aware Scale” của CS4, thì chắc tôi sẽ phải hạ thấp sự kỳ vọng của mình xuống một chút. Phần trình diễn kết quả của tính năng “HDR imaging”, theo tôi có vẻ hơi cường điệu.
Beautiful Strokes, Perspective Drawing, và công cụ Shape Builder là những tiện ích mới thêm vào bộ Illustrator. Trong khi đó, interactivity lại được tập trung giới thiệu là tính năng nổi bật nhất của InDesign, giúp cho phần mềm hỗ trợ dàn trang này có thêm khả năng xuất sang định dang Flash, trình chiếu trên web và trên slide (trong khi đó chương trình Flash CS5 cũng cho phép xuất thẳng ra định dạng có thể chạy trên iPhone (cũng có thể là không)), rõ ràng là tính năng ít được mong đợi và gây tranh cãi nhiều nhất.
“Tôi không muốn có Flash trong InDesign, tôi chỉ muốn một InDesign hiệu quả và chạy nhanh”, nhà thiết kế người Anh Craig Burgess phàn nàn như vậy trên Twitter. Có vẻ như, tính năng này được xem như con đường dễ dàng dẫn tới việc tạo ra những nội dung tương tự như iPad trong tương lai (giống như dự án ý tưởng mới cho tờ Wired do Adobe tài trợ), ra đời trong bối cảnh Flash đang vật lộn để tồn tại khi mà các thiết bị công nghệ nổi đình nổi đám nhất hiện tại đều không hỗ trợ Flash, một trong số đó là iPad.
Một tính năng rất hay trong CS5 là BrowserLab, giúp các nhà thiết kế web dễ dàng coi trước trang web đang thiết kế, dưới các trình duyệt phổ biến, thông qua một giao diện giả lập.
Tuy nhiên với nhiều người, diện mạo mới của CS5 là phần được quan tâm nhiều nhất. Những ai tinh mắt, đều thấy rõ điều này. “Cái quái quỉ gì đã khiến các icon của CS5 được thiết kế như vậy nhỉ?”, một nhà thiết kế đã thốt lên. Phải thừa nhận, tôi cũng từng có câu hỏi tương tự khi lần đầu trông thấy chúng. “Có phải chúng tượng trưng cho các quyển sách?”, tôi đã hỏi trực tiếp nhóm thiết kế đồ họa của Adobe như vậy, với mong muốn làm sáng tỏ vấn đề này.
Sự tiến hóa của thương hiệu..


Từ lúc ra mắt vào cuối năm 1980, 2 con át thương hiệu chủ lực của Adobe là Photoshop và Illustrator, đã tồn tại qua nhiều năm mà không thay đổi nhiều. Dẫu trải qua nhiều phiên bản nối tiếp nhau, hình ảnh chủ đạo của Illustrator vẫn là thần Vệ nữ của Botticelli, và Photoshop là con mắt (nhưng ở phiên bản CS được đổi sang con sao biển, rồi đến hình chiếc lông chim ở bản CS2)

Phiên bản đầu tiên của Adobe Illustrator và Adobe Photoshop

Tất cả đã thay đổi kể từ năm 2005, khi Adobe và Macromedia sát nhập lại với nhau, tạo nên một đế chế truyền thông khổng lồ. Nhóm phát triển thương hiệu Adobe phải đối diện với thách thức to lớn: Làm thế nào sát nhập hàng tá các sản phẩm từ 2 công ty vào trong một hệ thống thống nhất? Làm thế nào biến Macromedia Flash trở thành Adobe Flash? Nếu trộn bộ Adobe Creative Suite vào bộ Macromedia Studio sẽ có thể là một thảm họa.

Giả lập: Adobe CS2 khi kết hợp Macromedia Studio 8, 2006

Dưới sự dẫn dắt của chuyên gia thiết kế nội bộ Ryan Hicks, một hệ thống mới ra đời mang tên Creative Suite 3. Lấy màu sắc làm yếu tố chủ đạo, nhóm thương hiệu Adobe đồng thời sử dụng một cấu trúc câu giản tiện, dễ nhớ gồm 2 chữ cái, tạo ra một hệ thống tên gọi nhất quán cho toàn bộ các sản phẩm trong bộ. Với biểu tượng mới này, Flash cuối cùng đã có thể trở thành một thành viên chính thức của gia đình, đường hoàng đứng cùng Photoshop trên nền desktop.
Chỉ có điều, không phải tất cả người sử dụng đều có thể dễ dàng chấp nhận nó trong lần ra mắt vào năm 2007. Phản ứng có thể nói là rất trái ngược nhau.

Hệ thống các icon trong bộ CS3

Idsgn đã trò chuyện với Shawn Cheris, trưởng thiết kế của nhóm, ông nhớ lại: “Khi Adobe giới thiệu hệ thống nhận diện bộ CS3, mọi người đều ghét nó. Tôi cũng ghét nó. Nhưng một khi chúng xuất hiện trên desktop và cho thấy độ hữu ích nhiều như thế nào, mọi người đều nhanh chóng thay đổi quan điểm. Đã có người lấy cảm hứng từ nó, thiết kế ra nhiều thứ thú vị như chiếc gối CS này.
Bất chấp những phản ứng đã từng có, những icon tiếp tục được sử dụng ở bộ CS4, nhưng dưới dạng chữ trắng trên nền đen trong. Lần ra mắt bộ CS5, Adobe muốn giới thiệu tới khách hàng một sự chuyển đổi đặc biệt hơn. Cheris đã giải thích rõ trong blog XD của Adobe:
Khi chúng tôi bắt đầu suy nghĩ sẽ làm như thế nào với bộ CS5, hầu hết mọi người đều nhất trí sẽ mang trở lại cảm giác vui vẻ tới thương hiệu. Mục tiêu của chúng tôi sẽ tiến xa hơn hình thức biểu hiện icon dạng nguyên khối đã từng được thể hiện ở CS3 và CS4, và sẽ làm chúng trông năng động hơn. Chúng tôi muốn mang tới những giá trị nghệ thuật đầy khát khao và gây cảm hứng tới toàn hệ thống nhận diện, kế thừa và tiếp nối phần đồ họa mà chúng tôi đã xây dựng thành công ở bộ CS3 và CS4.
Tạo màn hình chào

Khi xem xét tới những góc độ thiết kế lớn hơn, nhóm phát triển CS5 tìm thấy niềm cảm hứng mới từ các biểu tượng thể thao của TVH Munich 72 do Otl Aicher thiết kế. Xây dựng trên hệ khung lưới hình học, các icon của Aicher vừa độc đáo khi đứng riêng, vừa thống nhất khi đứng trong một bộ. Đây có thể là một giải pháp tuyệt vời, khi mà Adobe bán ra ngày một nhiều các ứng dụng phần mềm hơn.

Hệ thống icon các môn thi đấu trong TVH Munich 1972, thiết kế bởi Otl Aicher.
Một hệ lưới tương tự như của Aicher được thiết lập, làm nền tảng cho toàn hệ thống đồ họa. Nếu không có nó, chúng ta sẽ không thể nào làm việc với các đối tượng đường thẳng được nữa. Sử dụng hệ khung lưới, chúng tôi bắt đầu tạo ra những hình cơ bản để cấu trúc thành những hình phức tạp hơn.

Hệ khung lưới tương tự như củaAicher trở thành nền tảng cho hệ thống đồ họa mới của Adobe.


Những phác thảo đầu tiên, nghiên cứu cấu trúc hình học, không gian, và độ trong của mảng.

Kế đó, nhóm đã cắt rời chúng ra thành 5 phần, tổ hợp lại tạo nên hình dạng đặc biệt tương ứng với từng chương trình. “Sau nhiều thử nghiệm, chúng tôi khám phá ra rằng, chỉ cần 5 mảnh rời này, chúng tôi vẫn có thể tạo ra vô số hình dáng phức tạp hơn.” Cheris giải thích trong một bài blog kế tiếp.

Một bộ các mảng rời tạo thành màn hình chào của CS5.

Màn hình chào sử dụng lại bảng màu mà chúng tôi đã xây dựng từ phiên bản CS3, với một chút thay đổi nhỏ. Để tăng thêm độ phân biệt về mặt thị giác giữa các sản phẩm trong bộ CS5, chúng tôi đưa ra những cặp màu, xây dựng từ một màu chính và một màu nhẹ hơn của nó.

Màn hình chào của các chương trình : Flash Professional, Premiere Pro, SoundBooth, Dreamweaver


Màn hình chảo cho Adobe Illustrator CS5

Cập nhập hệ thống các icon



Icon mới của các chương trình: Illustrator, InDesign, Fireworks, Dreamweaver

Các icon có dạng gấp lại như một quyển sách, lấy cảm hứng từ chính ngôn ngữ tạo hình của màn hình chào, với độ trong suốt và độ ánh kim loại tương tự. Chúng tôi đã hỏi Cheris, rằng ông nghĩ như thế nào về các phản ứng trái ngược nhau xung quanh các icon này:
Chúng tôi cảm thấy thích thú khi quan sát các phản ứng trái ngược này. Phản hồi tới thiết kế của màn hình chào phần lớn là tích cực, nhưng lại khá mâu thuẫn đối với thiết kế các icon. Chúng tôi đã đặt chúng trên màn hình để quan sát trong một thời gian dài, và hầu hết các chuyên gia thiết kế của chúng tôi đều đánh giá cao chúng. Chúng có độ trong suốt nhẹ, khi được canh thẳng trên nền desktop chúng sẽ trông thật tuyệt. Thêm vào đó, nếu không nhìn thấy màn hình chào, nhiều người thấy chúng hơi khó hiểu và sẽ tự hỏi tại sao chúng lại nổi khối 3D? Tôi nghĩ, khi đã quan sát hết toàn thể, mọi người sẽ hiểu ra và dần thay đổi suy nghĩ.
Khi quan sát sự hòa hợp của toàn bộ các logo, tôi phải đồng ý với lập luận của Cheris. Sự tiến hóa đã không diễn ra nhanh chóng hay thay đổi đột ngột, các điều chỉnh tuy nhỏ nhưng cần thiết và có tính an toàn cao.

So sánh sự phát triển của các icon từ CS3, CS4, đến CS5

Phông chữ sử dụng trên icon của bộ CS3 và CS4 là phông ‘Adobe Clean,’ do Robert Slimbach thiết kế. Không dừng tại đó, trong năm ngoái, Adobe đã thông báo sẽ sử dụng phông Clean như là phông chữ chính thức của Adobe, thay thế cho phông chữ cũ là Minion và Myriad, do Slimbach thiết kế riêng cho Adobe (riêng phông Myriad, là sản phẩm thiết kế chung với Carol Twombly). Adobe cũng cho biết họ không có kế hoạch nhượng quyền phông chữ này, không giống như với Myriad giờ là phông chữ chính của vô số các công ty, từ Apple tới Walmart.
“Phông chữ do ông tạo ra cũng “kinh điển” như các tác phẩm trước đây, đường nét được điều chỉnh vừa phải, theo hướng hiện đại và tân tiến hơn…Hầu hết các phông chữ không chân ít khi được thiết kế để sử dụng cho các đoạn tiêu đề dài, nhưng Robert là một bậc thầy trong lĩnh vực thiết kế phông chữ, ông thậm chí còn giúp nó tỏa sáng ngay cả trong tình huống như vậy. Phông chữ được yêu cầu phải cân bằng tinh tế giữa sự cân đối, nhịp điệu và cá tính riêng, và Adobe Clean đã làm cực tốt điều này.”
—David Lemon, Quản lý cấp cao, Bộ phận phụ trách phông chữ của Adobe
Bao bì mới

Phần bao bì mới của Adobe do công ty Tolleson Design thiết kế. Bao bì bộ CS4 cũng do chính công ty này thiết kế.

Trước và sau: bộ CS4 Master Collection, 2008 (trái) và bộ CS5 Master Collection, 2010


Illustrator CS4, 2008 (trái) and Illustrator CS5, 2010


Bộ CS5: After Effects, Dreamweaver, Fireworks, Illustrator, Flash Professional, InDesign, Photoshop, và Photoshop Extended

Giống như style thiết kế của màn hình chào, bao bì của các sản phẩm trông rất hòa hợp với nhau, trong khi vẫn tạo được cá tính riêng biệt. Thực tế chính Cheris đã thuyết phục Tolleson sử dụng thiết kế màn hình chào làm tư liệu tham khảo chính:
Chúng tôi gặp họ [Tolleson Design] ngay từ những buổi đầu tiến hành công việc, chia sẻ với họ những cái mà chúng tôi nghiên cứu ra, đặc biệt nhấn mạnh tới hướng phát triển thiết kế các màn hình chào. Họ ứng dụng khá tốt kết quả này vào thiết kế bao bì. Tôi thực sự thích ý tưởng sử dụng các mặt phẳng gấp của họ, vì nó “tông xiệc tông” với thiết kế của màn hình chào. Chúng tôi sẽ cố gắng cộng tác với họ nhiều hơn nữa cho kế hoạch phát triển CS6 trong thời gian sắp tới.

Các bộ Premium: CS5 Production Premium, CS5 Web Premium, and CS5 Design Premium

Dụ án phát triển thương hiệu CS5 được thai ngén và điều hành bởi Ryan Hicks (phụ trách chính), Shawn Cheris, và Dave Nelson. Chân thành cám ơn nhóm phát triển đã dành thời gian chia sẻ suy nghĩ và tư liệu.

(st)

“Tia chớp” và “Ánh bạc”



“Tia chớp” “Ánh bạc”

Ngthientrung.blogspot.com


Khi mình chập chững học Flash cũng là khi Microsoft cho ra mắt version 2.0 Silverlight, sau một thời gian dài “ngâm cứu” Flash mình lại tự hỏi : “Thế còn Silverlight. Flash và Silverlight công nghệ nào hay hơn ? Tương lai RIA sẽ do Flash hay Silverlight thống lĩnh?”. Mình dạo quanh các diễn đàn, search từ khóa “Flash vs Silverlight” trên Google để tham khảo các nhận xét các chuyên gia và nhìn chung : có nhiều nhận xét nghiên về SilverLight hơn, Flash tuy không được đánh giá cao nhưng cũng đã có vài site lớn sau 1 thời gian ngắn áp dụng đã chuyển công nghệ Silverlight trở về dùng Flash.


Trang web nổi tiếng http://www.shinedraw.com/ chuyên trình chiếu các hiệu ứng Flash và Silverlight và JavaFX để mọi người bình chọn các công nghệ Ria. JavaFX chắc chỉ tham gia cho vui thôi, mình cũng đã có xem qua công nghệ Ria này của Java, nói ngắn gọn là không thể so sánh được với Flash và Silverlight, với cấu trúc mã design không giống ai (không giống CSS cũng chẳng giống XML) …moreover code tay từ đầu chí cuối (-_-)…. Trở lại với trang Shinedraw và cuộc cạnh tranh của Flash–Silverlight. Không phải mình đã học Flash mà thiên vị cho Flash, mà quả thật mình nghi ngờ tính công bằng của trang web này. Đưa ra cả 2 hiệu ứng như nhau, ráng tập trung tìm chỗ khác nhau của 2 công nghệ này hay tìm xem công nghệ nào hay hơn nhưng tìm mãi mà không thấy. Với mình có thể nói là 2 công nghệ này ngang nhau, có khi mình thấy Flash load trang nhanh hơn Silverlight do kích thước file swf thường nhỏ hơn file xap. Ấy thế mà, số người bình chọn công nghệ Silverlight luôn hơn ít nhất là 1,5 lần so với Flash. Về sau mình lại biết là Shinedraw chỉ trình diễn những effect mà Silverlight “có thể làm được”, có những effect Flash làm được còn Silverlight bó tay thì Shinedraw giấu nhẹm. Thêm vào đó Shinedraw tỏ ra thiếu công bằng khi luôn khuyến khích mọi người nghiên cứu Silverlight.


Quả thật mình nghi ngờ Shinedraw. “Phải chăng Shinedraw là con bài của Microsoft !!?” . Ai chẳng biết lão cáo già Microsoft rất giỏi về maketing, bất kỳ công nghệ mới, sản phẩm mới của Microsoft luôn được trình làng rất rầm rộ, các buổi thuyết trình mang tính quảng cáo được tổ chức khắp nơi. Chiêu mộ các Microsoft Student Partner (MSP – Đại sứ sinh viên) ở các trường Đại học nhằm góp phần quảng bá công nghệ Microsoft trên khắp thế giới. Và shinedraw phải chăng là 1 chiến lược maketing của Microsoft !? Các đánh giá mà trước đây thiên về Silverlight liệu có thật khách quan !? Mình muốn biết thật sự Flash & Silverlight công nghệ nào đỉnh hơn, vậy là mình dành thời gian học thêm Silverlight.


Mình khuyến khích các Flash developer nên nghiên cứu thêm công nghệ Silverlight, không mất thời gian nhiều đâu ^^. Trước đây, mình đã xem trên 1 trang web đã treo 1 câu rất ấn tượng “Nếu bạn đã là Flash developer, bạn sẽ nhanh chóng trở thành Silverlight Master. Mình đã kiểm nghiệm thực tế bản thân và kết luận lời tuyên bố trên hoàn toàn có cơ sở. Tuy không phải Silverlight Master, nhưng ít ra mình chỉ mất 2 tuần để học hết căn bản Silverlight và thêm 1 tuần nữa đã có thể bắt tay làm Game bằng Silverlight được. Nói như vậy để biết Microsoft cố gắng xây dựng Silverlight theo hướng dễ dàng tiếp cận cho các lập trình viên Flash. Không phải riêng Silverlight mà cả các công nghệ khác cũng được Microsoft xây dựng trên 1 chuẩn như vậy. Công nghệ Microsoft với mình có thể hình dung bởi 2 từ dễ xài và dễ phát triển. Chính vì lý do đó Microsoft ngày càng hút được nhiều lập trình viên Flash về phía mình.


Bước đầu mình có 1 số đánh giá khách quan về 2 công nghệ ADOBE-MICROSOFT như sau:


Về IDE, Silverlight hơn hẳn Flash do xài chung bộ VisualStudio.Net quá đỉnh. Silverlight tách hẳn phần viết code và desigh riêng. Code trong VS.NET, design bằng bộ Expression Blend (hiện tại đã ra đến bản 4 beta). Tuy code và design riêng nhưng vẫn giữ được sự đồng bộ với nhau. Thậm chí từ version 3 của Expression Blend đã có thể viết code ngay trên Blend mà không cần VS.NET. Trước đây Flash vẫn nhét chung phần code và design vào bộ Adobe Flash Professional (AFP - nay đã ra bản CS5 nhưng chưa biết down hay mua ở đâu), mà code trên AFP thì cực kỳ chuối, không chấm sổ được như Silverlight không tự sinh code event như Silverlight. May mắn Flash được các hãng phần mềm thứ 3 hỗ trợ bộ FlashDevelop và các plugin bộ sung cho IDE này, tuy không code đỉnh như VS.NET nhưng vẫn sướng hơn nhiều so với AFP.

Về ngôn ngữ lập trình, Silverlight vẫn hơn Flash do sử dụng ngôn ngữ lập trình C# hỗ trợ hướng đối tượng mạnh mẽ, trong khí Flash trước đây khi còn là sản phẩm Macromedia sử dụng ngôn ngữ kịch bản ActionScript2 cũng có chút hướng đối tượng nhưng không mạnh và không được hỗ trợ đầy đủ. Chỉ khi Adobe mua lại Flash từ Macromedia đã thêm vào ngôn ngữ ActionScript3 cho version 9.0, CS3 trở lên. AS3 đặc biệt hướng đối tượng hơn AS2, mềm dẻo hơn nhưng vẫn thiếu 1 số khái niệm như overload method, enum, struct,… Có lẽ ta nên trông chờ vào thế hệ AS4 sắp tới có nhiều cải tiến hơn, tuy chưa ra mắt nhưng theo như mình tìm hiểu có lẽ AS4 sẽ thêm vào rất nhiều khái niệm mới mà cả C# lẫn Java vẫn chưa có (dynamic class, internal variable,…)


Về framework, có lẽ xét đến tận cùng thì Flash sẽ có lợi hơn Silverlight. Nếu Silverlight được thừa hưởng 1 phần framework từ .Net Framework thì Flash được sử dụng chung bộ Air Framework của Flex dùng để tạo ra các ứng dụng tề web, đến dịch vụ và các ứng dụng desktop của Adobe. Khác với .Net Fx, Air Fx bao gồm các class dễ sử dụng hơn trong .Net Fx, ví dụ cùng 1 chức năng trong .Net Fx phải sử dụng 1 tổ hợp gồm 5-6 class thì trong khi đó Air Fx chỉ cần dùng 1-2 class và gọi vài method trong đó là đủ. Dù kể ra có vẻ bất công với Silverlight nhưng rõ ràng ra đời trước chục năm là 1 lợi thế của Flash, khi cộng đồng mã nguồn mở của Flash đã phát triển rất lớn mạnh, đa số các thư viện lớn như Sandy, Away3D, Papervison3D, GreenSock … đều là đóng góp của cộng đồng mã nguồn mở thì việc phát triển ứng dụng, Game trên Flash sẽ dễ dàng hơn so với Silverlight.


Về ứng dụng desktop, Silverlight dù có thể chạy OutOfBrowser ở version3 Silverlight nhưng có vẻ không thể được xem là ứng dụng Desktop thật sự. Trong khi đó người anh em WPF của Silverlight được xem như là ứng dụng desktop thế hệ mới có thể thay thế cho WindowForm sau này. Tương tự như Silverlight, WPF cũng sử dụng mã XAML để design, vẫn đầy đủ các hiệu ứng, animation…, thư viện trong WPF đầy đủ hơn so với Silverlight, nhưng theo mình thì việc design trong Silverlight dễ dàng hơn trong WPF. Về Flex vừa là ứng dụng web vừa tạo đc ứng dụng desktop, Flash có thể dùng 1 số phần mềm convert thành ứng dụng chạy hoàn toàn độc lập trên desktop, có thể tránh được các rào cản về policy mà ứng dụng web vướng phải. Cộng 1 điểm cho Flash/Flex.


Về ứng dụng trên Mobile, hiện tại Silverlight 2.0 có thể chạy được trên HĐH Window Mobile, Microsoft hứa hẹn năm 2010 thỏa thuận được với Nokia để ứng dụng Silverlight của họ có thể chạy trên HĐH Symbian. Chờ mọc râu mà ko thấy đâu, chắc gặp sự cố gì rùi ^^. Người em út FlashLite có thể chạy trên HĐH Symbian, hiện mình đang xài Nokia 5320 chạy được ứng dụng FlashLite 3.0, 1 số ít thiết bị di động có thể chạy đc FlashLite 4.0. Flash CS5 có thể viết các ứng dụng Flash cho IPhone.


Về Effect và Animation, như mình đã nói ở trên, theo mình tất cả effect Silverlight làm được, Flash đều làm được nhưng ngược lại thì không chắc lắm, còn về hiệu suất thì mình chưa biết được công nghệ nào tối ưu hơn. Ví dụ đơn giản, các effect về 3D của Flash rất nhiều nhưng Silverlight thì không được hỗ trợ 3D hoàn chỉnh, chỉ có các Perspective Transform chỉ là giả 3D. Hệ thống Effect trong Flash phong phú hơn Silverlight, nếu trong Silverlight hiện tại là 4.0 chỉ có Blur và DropShadow thì trong Flash có thêm Bevel, Gradient,… tương tự như photoshop.Tiếp đến về Animation, trong Silverlight chia làm 2 loại animation là storyboard và state, Flash cũng chia làm 2 nhóm là motion và shape. Các state trong Silverlight có thể chuyển đổi qua lại cho nhau, trong khi đang thực hiện animation của state này có thể chuyển sang thực hiện animation của 1 state khác, đó là do các animation trong Silverlight đều được định nghĩa trong code XAML, các trạng thái đầu và cuối đều được khai báo , các state là 1 tập hợp trạng thái đầu, cuối, thời gian chạy. Khi muốn chuyển state chỉ việc so trạng thái hiện tại và trạng thái đầu của state mới. Animation trong Silverlight (storyboard, state) dựa trên Timeline tức là xét trạng thái và sự thay đổi đầu-cuối sẽ cho đối tượng thay đổi từng chút 1 cho đến trạng thái cuối trong 1 khoảng thời gian định sẵn, animation trong Flash dựa trên frame, giống làm film hoạt hình, sẽ cho từng frame hiện liên tục, ví dụ animation của bạn gồm 120 frame, tốc độ 12fps (12 frame trên 1s) thì animation chạy trong 10s, nếu tăng giá trị lên 24 fps thì animation thì tương đương số khung ảnh trong làm film và animation diễn ra trong 5s thôi. Ý nghĩa, nếu không cần thiết có thể giảm số frame trên giây để giảm nhẹ tốc độ xử lý CPU, ngoài ra với các animation không thể thực hiện đc bằng Motion Tween hay Shape Tween, các FlashDesigner sẽ thiết kế trên từng frame 1 cho đến hàng trăm frame (chả bít mấy cha này ăn gì mà trâu dữ ^^).


Về sự linh hoạt trong code Design, Silverlight linh hoạt hơn, với Silverlight, nếu bạn design bằng Expression Blend được thì bạn cũng có thể code bằng C# được (vất vả thôi) dù là Effect, Animation hay Design nhờ vậy bạn có thể design in Runtime được. Flash tuy cũng design 1 số bằng ActionScript như phức tạp hơn nhiều so với C#, Motion Tween cũng design được nhưng nhờ code XML định nghĩa các trạng thái, nếu bạn dùng các thư viện OpenSource như GreenSock thì sẽ dễ hơn Silverlight, Shape Tween thì chắc bó tay, mình vẫn chưa biết làm sao để tạo ShapeTween hay kỹ thuật khung xương bằng ActionScript.


Về Design, với bộ Expression Blend, Silverlight có thể design những chi tiết đơn giản nhanh hơn Flash nhưng để thiết kế những hình thể phức tap thì bó tay. Ví dụ, Silverlight không thể thiết kế các Usercontrol 3D được, Flash CS4 thì khác, tọa độ các MovieClip không chỉ có tọa độ x,y mà còn có tọa độ z, chính nhờ tọa độ z này mà mỗi MovieClip đều là 1 Object3D thật sự, khi rotatex, rotatey, rotatez các bạn sẽ thấy khối 3D MovieClip xoay như thế nào. Thêm vào đó Flash CS4 có thể tạo nhân vật hoạt hình cử động như thật nhờ vào cách thiết kế khung xương cho nhân vật (Silverlight dù phát triển đến version 10 cũng ko làm đc trò này).


Về hệ thống Panel, đây là khái niệm mới trong Silverlight mà Flash chưa có. Panel gọi chung là các đối tượng chứa dùng để chứa các UIElement khác, các lớp được kế thừa từ Panel như : Canvas, Grid, StackPanel, Border,… mỗi panel có 1 behavior riêng cho các usercontrol chứa trong nó. Ví dụ, Grid sẽ bố cục lại vị trí, kích thước các UIElement chứa trong nó khi kích thước thay đổi, Stackpanel sẽ xếp các UIElement theo hàng hoặc cột, Border chỉ chứa 1 UIElement duy nhất,… Còn trong Flash thì bất cứ việc gì cũng đưa về MovieClip, nhưng càng lồng nhiều movieclip vào nhau sẽ rất khó khăn cho việc code.


Về Template và Skin, Template trong Silverlight chuyên nghiệp hơn Skin trong Flash. Template và Skin là lớp vỏ ngoài của các control (trong flash gọi là component). Bạn có thể tạo 1 button hình khối cầu 3D bằng Silverlight đóng gói thành Template, sau này nếu muốn thay template cho các button khác bạn chỉ việc chọn template khác cho button đó. Vấn đề tương đương trong Flash là bạn phải tạo ra 1 skin mới cho Button, xóa button cũ, kéo button có skin mới vào, đặt tên trùng với button cũ (Không pro như silverlight rồi). Ngoài ra Silverlight đóng gói tất cả Template thành 1 file *.resx có thể mang sang các project khác và hoàn toàn tương thích. Vấn đề tương đương trong Flash là bạn phải mở 2 project trong Flash và kéo thả component từ project này sang project khác (như vậy trong Flash nên chia ra người chuyên tạo skin project và 1 người làm code project).


Về hệ thống Control, Silverlight được tích hợp nhiều control chuẩn hơn so với Flash. Hầu như tất cả control chuẩn trong window Silverlight đều có đủ. Trong flash gọi control là các component, nếu bạn search từ khóa “Flash component” trên google sẽ thấy rất nhiều người sống nhờ vào việc bán component Flash, họ tạo ra nhiều loại component và API cho các component này và … rao bán, thỉnh thoảng các bạn cũng có thể tìm được các component free ^^.


Về Behaviors, Behaviors là các ứng xử khi gặp 1 sư kiện, ví dụ khi click chuột, khi di chuyển chuột sẽ phát sinh 1 sự kiện lẽ ra bạn phải viết code thụ lý sự kiện đó. Nhưng trong Silverlight đã thiết kế cho phép bạn kéo thả các 1 số behaviors vào xử lý từng sự kiện của các control mà các bạn không cần viết 1 dòng code nào, tuy không thể đáp ứng tất cả nhu cầu nhưng nếu nắm vững cách sử dụng behaviors này sẽ tiết kiệm đc khối thời gian viết code. Flash 8 cũng có Behaviors nhưng không đầy đủ bằng Silverlight, nhưng sau khi lên ActionScript 3 (CS3, CS4, CS5) thì không còn Behaviors nào được hỗ trợ nữa ???


KẾT LUẬN


Quả thật, không ai dám nói chắc mình đã tường tận cả 2 công nghệ lớn này. Duy chỉ 1 nhận xét mình tin chắc là đúng :


Cả 2 công nghệ đều có ưu điểm riêng, như mình đã nhận xét, và sẽ không công nghệ nào bị xóa sổ khỏi cuộc đua tài này. Thời gian sẽ chứng minh những gì mình nói là đúng. Mỗi công nghệ có 1 mặt mạnh ở những lĩnh vực khác nhau. Với Flash, lĩnh vực quảng cáo, và game sẽ là sân chơi dành riêng cho Flash, theo mình Flash thích hợp phát triển game hơn so với Silverlight. Còn Silverlight có thể phát triển các ứng dụng trực tuyến, các ứng dụng như GoogleDoc Silverlight có thể làm tốt hơn Flash. Không kể đến Flex và WPF, Silverlight có thể xây dựng các ứng dụng webservice (WCF) tốt hơn Flash...


Ở VN, Flash vẫn còn thống trị 1 thời gian dài trước khi Silverlight có thêm bước đột phá lớn hơn.

Silverlight dễ học, dễ tiếp cận, phát triển các ứng dụng nhanh nhưng không hiểu sao với mình Flash vẫn có 1 sự lôi cuốn rất lớn.

27 thg 4, 2010

Microsoft và Adobe "thượng đài" quyết đấu

Việc những website "sành điệu" nhất hiện nay như YouTube và MySpace đều sử dụng công nghệ Flash và các ứng dụng thiết kế từ Adobe Systems không thể lọt khỏi mắt Microsoft. Và tất nhiên, gã khổng lồ phần mềm không thể không nóng gáy.

Phô trương thanh thế

Để phản đòn, Microsoft sắp sửa tung ra một bộ công cụ dành cho giới thiết kế và phát triển Web. Mặt khác, gã khổng lồ phần mềm cũng hiểu rằng cần phải phòng thủ Adobe ngay trên chính "sân nhà" của mình là máy tính để bàn, khi mà ranh giới ngăn cách giữa các ứng dụng Internet với desktop ngày càng trở nên nhạt nhòa.

Bộ phần mềm Expression Studio của Microsoft sẽ đối đầu trực tiếp với hai công cụ đầu bảng của Adobe là Photoshop và Illustrator. Nó cũng được trang bị một phần mềm dựng chương trình multimedia cho tương xứng với Adobe Flash. Và với mức giá 599 USD/bộ, Expression quả là một món quá hời so với khoản 1000 USD mà Adobe đang áp dụng cho các khách hàng của hãng này.

Hiện tại thì Expression Web, thứ vũ khí mà Microsoft dùng để cạnh tranh với phần mềm biên tập Web Dreamweaver của Adobe đã có mặt trên thị trường. Và đến cuối tháng này, một chương trình plug-in dạng như Flash có tên Silverlight (ánh chớp) sẽ được gã khổng lồ xứ Redmond phát hành dưới dạng beta.

Cả hai chương trình đều cho phép người dùng lập file thuyết trình multimedia một cách dễ dàng, nhanh chóng, bất kể là họ đang sử dụng trình duyệt Web hay hệ điều hành nào.

Trong khi ấy, Adobe vừa mới xuất xưởng Creative Suite 3 hôm thứ 2 vừa qua. Đây là phiên bản nâng cấp mới nhất của Photoshop và một loạt các ứng dụng chủ chốt khác, được Adobe chào hàng là "tích hợp một cách êm ái" với Flash và Dreamweaver.

Trận đấu nhiều hiệp

Trên thực tế, đây chỉ là màn xung đột mới nhất giữa Microsoft - kẻ thống trị trên thị trường phần mềm desktop và hệ điều hành - với Adobe, một đối thủ nhỏ bé hơn nhiều. Ngoài thiết kế Web, hai hãng còn đối đầu với nhau ở công nghệ "văn phòng không giấy bút" và hiển thị nội dung/phát triển ứng dụng cho điện thoại di động hay máy tính xách tay.

Tuy hàng triệu nhà phát triển phần mềm desktop đang gắn bó trung thành với Microsoft, song lịch sử hãng này chẳng mấy khi dính dáng đến giới thiết kế chuyên nghiệp.

Tuy FrontPage - công cụ biên tập Web không chuyên của Microsoft - có doanh thu bán lẻ cao hơn bất cứ sản phẩm cạnh tranh nào trong năm 2006, nhưng ngay từ giữa thập niên 90, giới thiết kế Web chuyên nghiệp đã phàn nàn rằng mã HTML do FrontPage tạo ra không tương thích với các trình duyệt phi Microsoft.

Lần này, Microsoft một mực khẳng định Express Web sẽ tạo ra mã HTML tương thích với mọi chuẩn hiện hành. Đồng thời, vòng đời của phần mềm FrontPage cũng sẽ được "đặt dấu chấm hết".

Một điểm thú vị là bộ công cụ Expression sẽ cho phép các nhà thiết kế đồ họa nhúng tay vào việc phát triển phần mềm desktop. Trong quá khứ, nhà thiết kế làm việc với Photoshop, sau đó chuyển giao lại phần hình ảnh cho giới lập trình. Chính nhà lập trình mới là người xoay sở "phiên dịch" những hình ảnh đó thành ra Web site hoặc ứng dụng phần mềm.

Nhưng giờ đây, trong khi nhà thiết kế vẽ, chỉnh sửa hình ảnh bằng một giao diện quen thuộc, bộ công cụ Express cũng đồng thời tạo ra những đoạn mã lập trình ẩn phía sau.

Microsoft thậm chí còn ấp ủ một thế hệ ứng dụng mới, kết hợp sức mạnh của các chương trình desktop với thiết kế và dữ liệu dạng multimedia từ nhiều nguồn khác nhau. Chẳng hạn như website mới của tờ The New York Times đã được thiết kế bằng bộ công cụ Expression, và nó cho phép độc giả download tin tức về máy, đọc tin theo đúng giao diện trên Web kể cả khi không kết nối mạng.

Adobe phản đòn

Dĩ nhiên là Adobe cũng không thể ngồi ì ra đó mà giương mắt nhìn Microsoft hô mưa gọi gió.

Phần mềm media mới ra mắt của Adobe, cho phép xem video Flash ngay trên máy tính desktop, kể cả khi nó không nối mạng. Ảnh: PCinpact.

Hãng này đã phát triển một công nghệ lai có tên Apollo, cho phép nhà thiết kế Web "gói ghém" tất cả các phần vụn của một website - từ mã HTML, Ajax, video và hình họa Flash cho đến cả PDF - và biến chúng thành một chương trình có thể chạy được trên máy tính để bàn, kể cả khi PC "ngoài vùng phủ sóng" của Internet.

Ngày hôm qua, Adobe đã trình làng một trong những ứng dụng Apollo đầu tiên của mình: một phần mềm media có thể xem được video Flash trên máy tính desktop.

Nếu như ứng dụng lai của Microsoft chỉ có thể phát triển được trên một máy tính Windows, cũng như sau này nó chỉ có thể chạy được trên máy tính Windows thì một ứng dụng Apollo có thể tương thích với bất cứ hệ điều hành nào.

Theo giới phân tích, phần thắng trong cuộc đấu này sẽ do chính cộng đồng thiết kế và phát triển Web quyết định. "Công nghệ nào sản sinh ra nhiều ứng dụng hơn sẽ thắng", ông Trip Chowdhry của Global Equities Research nhận định.

Nếu như hầu hết những ứng dụng thú vị đều được phát triển trên nền tảng Flash, người dùng sẽ không thấy cần phải mua PC Windows mới nữa. Mặt khác, liệu những nhà thiết kế bận rộn có chịu đầu tư thời gian quý báu của mình để học cách sử dụng bộ công cụ mới của Microsoft hay không?

Greg Storey, một chuyên gia thiết kế Web tại California, đã là người dùng trung thành của Mac và Adobe từ nhiều năm nay. Anh phàn nàn rằng Adobe hiện "nhồi nhét" thêm quá nhiều tính năng mới cứ như thể phần mềm của họ là một nồi lẩu thập cẩm. Nhưng điều đó không có nghĩa là Storey sẽ ngừng dùng Adobe.

"Với tôi, nó là sự khác biệt giữa lái một con Mercedes với một chiếc Ford xập xệ. Mà trong trường hợp này, Ford chính là Windows".

(theo AP)

25 thg 4, 2010

Khái niệm về Domain Name/Web Hosting

Domain Name (tên miền)

Tên miền là một chuỗi ký tự được gán vào một máy tính và được tìm kiếm thông qua hệ thống “Domain Name System” (DNS).

Mỗi tên miền được gán cho chỉ một địa chỉ IP (nhưng một địa chỉ IP có thể có nhiều tên miền) và được lưu trữ bởi máy chủ DNS toàn cầu. Sở dĩ người ta phải sử dụng tên miền vì nó dễ nhớ và mang tính diễn đạt ý nghĩa so với địa chỉ IP.

Một tên miền gồm có 2 phần: phần tên và phần đuôi.

Phần tên có chiều dài từ 1 - 63 ký tự và phải là chữ cái, số hoặc dầu “-“.

Phần đuôi là phần được quy định sẵn, để biểu thị cho lĩnh vực của website mà tên miền được gắn tới hoặc là quốc gia của nó.

Cả 2 phần được gắn với nhau bởi dấu “.”

Ví dụ: chongthamnhung.com

Thì “chongthamnhung” là tên và “com” là đuôi.

Các đuôi tên miền đang hiện hành: .biz .com .edu .gov .info .int .mil .name .net .org

Các đuôi tên miền theo quốc gia:

.ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .az .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cu .cv .cx .cy .cz .de .dj .dk .dm .do .dz .ec .ee .eg .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp .ke .kg .kh .ki .km .kn .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .ru .rw .sa .sb .sc .sd .se .sg .sh .si .sk .sl .sm .sn .sr .st .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm .tn .to .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .yu .za .zm .zw

Dịch vụ Web Hosting

Dịch vụ web hosting là một dạng của dịch vụ Internet hosting. Các nhà cung cấp web hosting sẽ cung cấp cho người dùng một phần đĩa cứng trên server của họ và đường truyền đến server đó. Người dùng có thể dùng những gì được cung cấp để lưu trữ một website mà website đó có thể được truy cập thông qua Internet.

Các server phục vụ cho web hosting phải mang một IP tĩnh. Người sử dụng web hosting có thể tải các file của họ lên server thông qua giao thức FTP hoặc HTTP. Thường thì các nhà cung cấp hosting cũng cung cấp cả domain để tạo ra sự thuận lợi cho khách hàng.

Có một số dịch vụ cung cấp web hosting miễn phí, bù vào đó website của người dùng thường sẽ được thêm và các thông điệp quảng cáo cho dịch vụ của họ.

Ngày nay, các web hosting thường hỗ trợ người dùng sử dụng các server script như PHP, ASP, Java và vài năm trở lại đây là sự nổi lên của Ruby và Python.

Tùy theo quy mô của web site mà khách hàng cần một loại web hosting khác nhau.

Nếu web site có quy mô nhỏ, người dùng chỉ cần dịch vụ “shared hosting”, với dịch vụ này, nhiều web site sẽ được lưu trữ trên cùng một server với cùng một IP. Người dùng có thể quản lý web site thông qua các phần mềm web-based như Plesk, Cpanel.

Nếu website có quy mô trung bình – nhỏ, và yêu cầu nhiều tùy biến hơn, người dùng có thể chọn dịch vụ dedicated server. Với dịch vụ này, người dùng có nhiều quyền can thiệp vào hệ thống hơn, và website của họ sẽ có một IP riêng.

Các website có quy mô vừa và lớn thường chọn giải pháp sử dụng một hoặc nhiều server riêng biệt cho hệ thống của mình.

21 thg 4, 2010

Nhập môn Java với JDBC và MySQL (phần 1)

JDBC là gì?

JDBC là viết tắt của “Java DataBase Connectivity”. Nó là một API (Application Programming Interface) có chứa một tập hợp các lớp, các giao diện Java và các thông báo lỗi ngoại lệ nằm trong cùng một đặc tả mà theo đó cả các công ty sản xuất JDBC driver cũng như các nhà phát triển JDBC đều phải tuân thủ chặt chẽ khi phát triển ứng dụng.

JDBC là một chuẩn truy xuất cơ sở dữ liệu rất phổ biến. Các RDBMS (Relational Database Management Systems – Hệ quản trị cơ sở dữ liệu quan hệ) hay các nhà sản xuất phần mềm bên thứ ba phát triển các driver cho Java đều cần tuân thủ chặt chẽ đặc tả JDBC. Các nhà phát triển khác sử dụng các driver này để phát triển nên các ứng dụng có truy cập cơ sở dữ liệu

Ai phát triển đặc tả JDBC?

SUN chuẩn bị và duy trì đặc tả JDBC. Bởi JDBC chỉ là một đặc tả (đề xuất cách viết và sử dụng các JDBC driver), nên các công ty sản xuất phần mềm bên thứ ba sẽ phát triển các JDBC driver tuân thủ chặt chẽ đặc tả này. Các nhà phát triển JDBC sau đó sẽ sử dụng các driver này để truy cập vào các nguồn dữ liệu.

Tại sao lại dùng JDBC?


JDBC tồn tại là để giúp các nhà phát triển Java tạo nên các ứng dụng truy xuất cơ sở dữ liệu mà không cần phải học và sử dụng các API độc quyền do các công ty sản xuất phần mềm khác nhau bên thứ ba cung cấp. Bạn chỉ cần học JDBC và sau đó bạn sẽ được đảm bảo rằngbạn sẽ có thể phát triển nên các ứng dụng truy cập cơ sở dữ liệu có khả năng truy cập đến các RDBMS khác nhau bằng cách sử dụng các JDBC driver khác nhau.

Kiến trúc JDBC

Trong Java có 2 lớp chủ yếu chịu trách nhiệm về thiết lập kết nối đến một cơ sở dữ liệu.

1. DriverManager - Nạp các JDBC driver vào trong bộ nhớ. Có thể sử dụng nó để mở các kết nối tới một nguồn dữ liệu.

2. Connection
- Biểu thị một kết nối đến một nguồn dữ liệu. Được dùng để tạo ra các đối tượng Statement, PreparedStatement và CallableStatement.
Statement - Biểu diễn một lệnh SQL tĩnh. Có thể sử dụng nó để thu về đối tượng ResultSet.


3. PreparedStatement - Một giải pháp thay thế hoạt động tốt hơn đối tượng Statement, thực thi một câu lệnh SQL đã được biên dịch trước.

4. CallableStatement – biểu diễn một thủ tục được lưu trữ. Có thể được sử dụng để thực thi các thủ tục được lưu trữ trong một RDBMS có hỗ trợ chúng.

5. ResultSet
- biểu diễn một tập kết quả trong cơ sở dữ liệu tạo ra bởi việc sử dụng một câu lệnh SQL là SELECT.

6. SQLException - một lớp xử lý lỗi ngoại lệ chứa các lỗi truy cập cơ sở dữ liệu.

Gói thứ hai,
javax.sql là một bộ phận của J2SE 1.4 và J2EE 1.3. Nó bổ sung các tính năng sau đây vào JDBC để hỗ trợ thêm cho các tính năng đã có trong gói java.sql:

7. DataSource - Trừu tượng hóa một nguồn dữ liệu. Đối tượng này có thể sử dụng thế cho

8. DriverManager để tạo ra một cách có hiệu quả các kết nối cơ sở dữ liệu (có khả năng sử dụng việc chứa/phân chia các đường kết nối ngầm).
Tạo sẵn cơ chế phân chia đường kết nối (built-in connection pooling).


9. XADataSource, XAConnection
– Cho phép/Hỗ trợ các giao dịch phân phối.
RowSet – Nó mở rộng giao diện ResultSet để tăng thêm sự hỗ trợ đối với các tập kết nối bị ngắt.

Có 4 loại JDBC driver. Thông dụng nhất và cũng là hiệu quả nhất là loại 4. Sau đây là mô tả:

JDBC Driver loại 1- Chúng là các trình điều khiển cầu nối JDBC-ODBC. Chúng ủy nhiệm công việc truy cập dữ liệu cho ODBC API. Chúng là trình điều khiển chậm nhất trong số còn lại. SUN cung cấp một phần mềm trình điều khiển JDBC/ODBC.

JDBC Driver loại 2 – Chúng chủ yếu sử dụng API mã nền để truy cập dữ liệu và cung cấp các lớp bao Java để có thể được gọi ra bằng cách dùng các JDBC driver.

JDBC Driver loại 3 – Chúng được viết thuần bằng Java và sử dụng giao thức Net độc lập nhà sản xuất để truy cập đến trình theo dõi từ xa độc lập nhà sản xuất. Trình theo dõi này đến lượt nó lại ánh xạ các lời gọi độc lập nhà sản xuất này vào các lời gọi phụ thuộc nhà sản xuất. Bước đặc biệt này đã làm tăng độ phức tạp và giảm tính hiệu quả trong truy cập cơ sở dữ liệu.

JDBC Driver loại 4 – Chúng được viết thuần túy bằng Java và là loại hiệu quả nhất. Chúng cho phép kết nối trực tiếp vào cơ sở dữ liệu, cung cấp kết quả tối ưu và cho phép lập trình viên thực hiện các chức năng tùy thuộc vào cơ sở dữ liệu cụ thể. Điều này đã tạo ra tính cơ động cao nhất là khi bạn cần thay đổi cơ sở dữ liệu bên dưới một ứng dụng. Loại driver này thường được dùng cho các ứng dụng phân tán cao.
SUN khuyến cáo sử dụng và phát triển các trình điều khiển loại 4 trong các ứng dụng
.

Cài đặt MySQL


MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. MySQL miễn phí hoàn toàn nên bạn có thể tải về MySQL từ trang chủ www.mysql.com.

MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OSX... Cài đặt Connector/J - JDBC Driver của MySQL JDBC Driver của MySQL có thể lấy về ở địa chỉ http://www.mysql.com/downloads/api-jdbc.html .

File bạn tải về sẽ là một file .zip hoặc .gz. Sau khi giải nén bạn sẽ có 1 file có tên tương tự như sau: mysql-connectorjava- 3.0.9-stable-bin.jar. Hãy chép file này vào thư mục %JAVA_HOME%/jre/lib/ext trên hệ thống của bạn. Ví dụ C:\j2sdk1.4.2\jre\lib\ext.
Bạn cũng cần đưa đường dẫn đến file JAR này vào biến môi trường MYSQL_DRIVER của bạn.
javasun2

Sau khi bạn đã đặt đường dẫn đến Connector/J vào biến môi trường MYSQL_DRIVER thì bạn đã có thể yên tâm là JDBC driver của MySQL đã được cài đặt xong.


Kiểm tra xem Connector/J đã hoạt động chưa?


Chúng ta tạo ra một chương trình Java nhỏ để kiểm tra xem chúng ta đã cài đặt đúng JDBC driver của MySQL chưa. Nếu chương trình chạy thành công thì nghĩa là trình điều khiển JDBC đã sẵn sàng cho các tác vụ phức tạp hơn. Bạn hãy tạo ra một file Connect.java với đoạn mã sau:

import java.sql.*;
public class Connect{
public static void main (String[] args){

Connection conn = null;
try{
String userName = “root”;
String password = “localhost”;
String url = “jdbc:mysql://127.0.0.1:3306/mysql”;
Class.forName (“com.mysql.jdbc.Driver”).newInstance ();

conn = DriverManager.getConnection (url,userName, password);
System.out.println (“Da ket noi CSDL”);
}
catch (Exception e){
System.err.println (“KHONG KET NOI DUOC”);
}
finally{
if (conn != null){
try{
conn.close ();
System.out.println (“Dong ket noi”);
}
catch (Exception e) { /* bo qua loi luc dong csdl */ }
}
}
}
}


Trước hết bạn hãy biên dịch file này ra mã bytecode nhưng để chạy nó, bạn cần chú ý đảm bảo MySQL đang chạy trên máy tính cá nhân của bạn. Nếu bạn đã cài đặt MySQL để nó chỉ chạy khi bạn gọi thì bạn hãy bật MySQL với câu lệnh mysqld-nt --console hay nếu bạn đã cài chương trình quản trị cơ sở dữ liệu này dưới hình thức một dịch vụ thì bạn có thể gõ net start mysql trong shell Run trong Windows.

Đoạn mã trên sử dụng cặp tên người sử dụng và mật khẩu là root/localhost với cơ sở dữ liệu là mysql. Nếu kết nối thành công, bạn sẽ thấy một màn hình như dưới đây xuất hiện.

javasun4

Chương trình trên sử dụng TCP/IP để kết nối vào hệ cơ sở dữ liệu MySQL.

* Phân tích

Để kết nối và sử dụng một cơ sở dữ liệu từ Java applet, servlet hay ứng dụng Java thì chúng ta cần thực hiện qua 3 bước:

1. Đăng kí/Nạp (các) driver

2. Thiết lập kết nối đến cơ sở dữ liệu

3. Gửi câu lệnh SQL và xử lý kết quả thu về

Bước đầu tiên để tạo ra một kết nối giữa ứng dụng Java và một cơ sở dữ liệu là đăng kí một JDBC driver với máy ảo Java (JVM) mà ứng dụng Java chạy trên đó. Với cơ chế kết nối truyền thống (sẽ nói trong phần cơ chế kết nối DataSource, thảo luận sau), thì kết nối và tất cả các hình thức giao tiếp với cơ sở dữ liệu đều do đối tượng DriverManager kiểm soát. Để thiết lập một đường kết nối, một JDBC driver thích hợp dùng cho cơ sở dữ liệu mục tiêu phải được đăng kí với đối tượng DriverManager.

Đặc tả JDBC chỉ ra rằng các JDBC driver được xem là sẽ tự đăng kí với đối tượng DriverManager một cách tự động khi chúng được nạp vào một JVM. Ví dụ đoạn mã sau sử dụng một bộ khởi tạo tĩnh để lần đầu tiên tạo ra một mẫu của JDBC driver mang tên persistentjava và sau đó đăng kí nó với DriverManager.

static {
java.sql.DriverManager.registerDriver(new
com.persistentjava.JdbcDriver()) ;
}

Việc đăng kí một driver đơn giản chỉ là việc nạp lớp driver vào JVM. Chúng ta có thể làm điều đó bằng một số cách khác nhau. Một trong những cách đó là thông qua

ClassLoader Class.forName(com.persistentjava.JdbcDriver) ;.

Một cách khác, không phổ biến lắm là dùng thuộc tính hệ thống jdbc.drivers. Chúng ta có thể dùng cách này theo 3 hình thức khác nhau:

Từ dòng lệnh:java -Djdb.drivers =com.persistentjava.JdbcDriver Connect

* Bên trong ứng dụng java:

System.setProperty(“jdbc.drivers”, “com.persistentjava.JdbcDriver”) ;

* Bằng cách thiết lập thuộc tính jdbc.drivers vào file thuộc tính hệ thống, nhưng nhìn chung là lại tùy thuộc vào hệ thống Bằng phương pháp tách các driver bằng một dấu phẩy, chúng ta có thể đăng kí nhiều driver thông qua kĩ thuật thuộc tính hệ thống ở trên. Một trong các lợi ích của kĩ thuật này là ở chỗ các driver có thể đưa vào và ra khỏi JVM mà không cần thay đổi mã (hoặc chỉ cần thay đổi ở mức tối thiểu). Nếu đăng kí nhiều driver, thứ tự ưu tiên của chúng như sau:

1) Các JDBC driver do thuộc tính jdbc.drivers đăng kí lúc khởi tạo JVM, và

2)Các JDBC driver được nạp động. Do thuộc tính jdbc. drivers chỉ được kiểm tra một lần vào lần gọi đầu tiên của phương thức DriverManager(), nên quan trọng là bạn phải đảm bảo rằng tất cả các driver được đăng kí đúng trước khi thiết lập kết nối.
Chú ý là có một số JVMs không tuân thủ đặc tả JVM và kết quả là các bộ khởi tạo tĩnh không phải lúc nào cũng làm việc thống nhất như mong muốn. Điều này dẫn tới việc có nhiều cách đăng kí một JDBC driver:

· Class.forName("com.persistentjava. JdbcDriver").newInstance() ;
· DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ;


Hai cách trên thường hoạt động tốt trong tất cả các JVM nên bạn có thể sử dụng chúng một cách thoải mái. Nhưng điều khác biệt là Class.forName() có thể chặn bắt một ClassNotFoundException, nên bạn cần bao mã đăng kí driver vào một bộ xử lý lỗi ngoại lệ thích hợp.
Ví dụ:

try{
Class.forName (“com.mysql.jdbc.Driver”).newInstance ();
}
catch (Exception e){
System.err.println (“KHONG KET NOI DUOC”);
}


Các sách về MySQL khuyến cáo bạn nên dùng cách trên. Phương thức Class.forname() nhận một chuỗi làm đối số. Trong trường hợp bạn dùng JDBC Driver của hãng MySQL AB cho MySQL bản 4.0 trở lên thì chuỗi đó là:

com.mysql.jdbc.Driver

Cần chú ý
là bạn không cần phải tạo ra một mẫu của driver và đăng kí nó với DriverManager vì việc gọi Class.forName() sẽ làm cho bạn điều đó một cách tự động.
Bước tiếp theo sau khi bạn đã đăng kí JDBC Driver là thực hiện kết nối. Toàn bộ công đoạn này được minh họa qua dòng mã sau:

Connection conn = DriverManager.getConnection(url, “myLogin”, “myPassword”);

Cách khác:
Connection conn;
conn = DriverManager.getConnection(url, “myLogin”, “myPassword”);

Đoạn mã trên rất tường minh. Phương thức getConnection() được gọi để thực hiện một kết nối thực sự đến phần mềm máy chủ cơ sở dữ liệu. Lớp DriverManager tạo ra một đối tượng Connection khi bạn gọi phương thức getConnection(). Phương thức này nhận một chuỗi URL làm đối số. Ví dụ, với MySQL thì chuỗi đó có thể là:

jdbc:mysql://127.0.0.1:3306/mysql hoặc jdbc:mysql://localhost/mydatabase

Chuỗi này tuân theo quy tắc sau đây: jdbc:: trong đó:
thường là driver hoặc cơ chế kết nối cơ sở dữ liệu

phụ thuộc vào , có thể thay đổi theo các nhà cung cấp driver mà nó có thể là mysql, db2, oracle hay odbc.
có thể chứa địa chỉ Internet cho các cơ sở dữ liệu ở xa. Phần này có thể gồm có tên host, mã số cổng, và tên của hệ thống cơ sở dữ liệu.

Chú ý là trong một số sách khác, công thức trên còn trình bày dưới dạng: jdbc:sub-protocol:database locator tuy về bản chất thì không có gì thay đổi.

Nếu một trong các driver mà bạn cung cấp nhận ra địa chỉ JDBC URL mà bạn cung cấp cho phương thức DriverManager.getConnection, thì driver đó sẽ thiết lập đường kết nối đến MySQL xác định trong JDBC URL.

Lớp DriverManager sẽ quản lý tất cả các chi tiết của việc thiết lập đường kết nối bên dưới nên bạn không cần phải quan tâm gì thêm.

Đường kết nối do phương thức DriverManager.getConnection trả về là một đường kết nối mở mà bạn có thể sử dụng để thông qua các lệnh JDBC nhằm gửi các lệnh SQL tới MySQL. Ở đây chúng ta có đối tượng conn chứa kết nối mở và chúng ta sẽ sử dụng chúng để thực hiện các ví dụ thao tác trên MySQL.

Nhập môn Java với JDBC và MySQL (phần 1)

JDBC là gì?

JDBC là viết tắt của “Java DataBase Connectivity”. Nó là một API (Application Programming Interface) có chứa một tập hợp các lớp, các giao diện Java và các thông báo lỗi ngoại lệ nằm trong cùng một đặc tả mà theo đó cả các công ty sản xuất JDBC driver cũng như các nhà phát triển JDBC đều phải tuân thủ chặt chẽ khi phát triển ứng dụng.

JDBC là một chuẩn truy xuất cơ sở dữ liệu rất phổ biến. Các RDBMS (Relational Database Management Systems – Hệ quản trị cơ sở dữ liệu quan hệ) hay các nhà sản xuất phần mềm bên thứ ba phát triển các driver cho Java đều cần tuân thủ chặt chẽ đặc tả JDBC. Các nhà phát triển khác sử dụng các driver này để phát triển nên các ứng dụng có truy cập cơ sở dữ liệu

Ai phát triển đặc tả JDBC?

SUN chuẩn bị và duy trì đặc tả JDBC. Bởi JDBC chỉ là một đặc tả (đề xuất cách viết và sử dụng các JDBC driver), nên các công ty sản xuất phần mềm bên thứ ba sẽ phát triển các JDBC driver tuân thủ chặt chẽ đặc tả này. Các nhà phát triển JDBC sau đó sẽ sử dụng các driver này để truy cập vào các nguồn dữ liệu.

Tại sao lại dùng JDBC?


JDBC tồn tại là để giúp các nhà phát triển Java tạo nên các ứng dụng truy xuất cơ sở dữ liệu mà không cần phải học và sử dụng các API độc quyền do các công ty sản xuất phần mềm khác nhau bên thứ ba cung cấp. Bạn chỉ cần học JDBC và sau đó bạn sẽ được đảm bảo rằngbạn sẽ có thể phát triển nên các ứng dụng truy cập cơ sở dữ liệu có khả năng truy cập đến các RDBMS khác nhau bằng cách sử dụng các JDBC driver khác nhau.

Kiến trúc JDBC

Trong Java có 2 lớp chủ yếu chịu trách nhiệm về thiết lập kết nối đến một cơ sở dữ liệu.

1. DriverManager - Nạp các JDBC driver vào trong bộ nhớ. Có thể sử dụng nó để mở các kết nối tới một nguồn dữ liệu.

2. Connection - Biểu thị một kết nối đến một nguồn dữ liệu. Được dùng để tạo ra các đối tượng Statement, PreparedStatement và CallableStatement.
Statement - Biểu diễn một lệnh SQL tĩnh. Có thể sử dụng nó để thu về đối tượng ResultSet.


3. PreparedStatement - Một giải pháp thay thế hoạt động tốt hơn đối tượng Statement, thực thi một câu lệnh SQL đã được biên dịch trước.

4. CallableStatement – biểu diễn một thủ tục được lưu trữ. Có thể được sử dụng để thực thi các thủ tục được lưu trữ trong một RDBMS có hỗ trợ chúng.

5. ResultSet - biểu diễn một tập kết quả trong cơ sở dữ liệu tạo ra bởi việc sử dụng một câu lệnh SQL là SELECT.

6. SQLException - một lớp xử lý lỗi ngoại lệ chứa các lỗi truy cập cơ sở dữ liệu.

Gói thứ hai, javax.sql là một bộ phận của J2SE 1.4 và J2EE 1.3. Nó bổ sung các tính năng sau đây vào JDBC để hỗ trợ thêm cho các tính năng đã có trong gói java.sql:

7. DataSource - Trừu tượng hóa một nguồn dữ liệu. Đối tượng này có thể sử dụng thế cho

8. DriverManager để tạo ra một cách có hiệu quả các kết nối cơ sở dữ liệu (có khả năng sử dụng việc chứa/phân chia các đường kết nối ngầm).
Tạo sẵn cơ chế phân chia đường kết nối (built-in connection pooling).


9. XADataSource, XAConnection – Cho phép/Hỗ trợ các giao dịch phân phối.
RowSet – Nó mở rộng giao diện ResultSet để tăng thêm sự hỗ trợ đối với các tập kết nối bị ngắt.

Có 4 loại JDBC driver. Thông dụng nhất và cũng là hiệu quả nhất là loại 4. Sau đây là mô tả:

JDBC Driver loại 1- Chúng là các trình điều khiển cầu nối JDBC-ODBC. Chúng ủy nhiệm công việc truy cập dữ liệu cho ODBC API. Chúng là trình điều khiển chậm nhất trong số còn lại. SUN cung cấp một phần mềm trình điều khiển JDBC/ODBC.

JDBC Driver loại 2 – Chúng chủ yếu sử dụng API mã nền để truy cập dữ liệu và cung cấp các lớp bao Java để có thể được gọi ra bằng cách dùng các JDBC driver.

JDBC Driver loại 3 – Chúng được viết thuần bằng Java và sử dụng giao thức Net độc lập nhà sản xuất để truy cập đến trình theo dõi từ xa độc lập nhà sản xuất. Trình theo dõi này đến lượt nó lại ánh xạ các lời gọi độc lập nhà sản xuất này vào các lời gọi phụ thuộc nhà sản xuất. Bước đặc biệt này đã làm tăng độ phức tạp và giảm tính hiệu quả trong truy cập cơ sở dữ liệu.

JDBC Driver loại 4 – Chúng được viết thuần túy bằng Java và là loại hiệu quả nhất. Chúng cho phép kết nối trực tiếp vào cơ sở dữ liệu, cung cấp kết quả tối ưu và cho phép lập trình viên thực hiện các chức năng tùy thuộc vào cơ sở dữ liệu cụ thể. Điều này đã tạo ra tính cơ động cao nhất là khi bạn cần thay đổi cơ sở dữ liệu bên dưới một ứng dụng. Loại driver này thường được dùng cho các ứng dụng phân tán cao.
SUN khuyến cáo sử dụng và phát triển các trình điều khiển loại 4 trong các ứng dụng
.

Cài đặt MySQL


MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. MySQL miễn phí hoàn toàn nên bạn có thể tải về MySQL từ trang chủ www.mysql.com.

MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OSX... Cài đặt Connector/J - JDBC Driver của MySQL JDBC Driver của MySQL có thể lấy về ở địa chỉ http://www.mysql.com/downloads/api-jdbc.html .

File bạn tải về sẽ là một file .zip hoặc .gz. Sau khi giải nén bạn sẽ có 1 file có tên tương tự như sau: mysql-connectorjava- 3.0.9-stable-bin.jar. Hãy chép file này vào thư mục %JAVA_HOME%/jre/lib/ext trên hệ thống của bạn. Ví dụ C:\j2sdk1.4.2\jre\lib\ext.
Bạn cũng cần đưa đường dẫn đến file JAR này vào biến môi trường MYSQL_DRIVER của bạn.
javasun2

Sau khi bạn đã đặt đường dẫn đến Connector/J vào biến môi trường MYSQL_DRIVER thì bạn đã có thể yên tâm là JDBC driver của MySQL đã được cài đặt xong.


Kiểm tra xem Connector/J đã hoạt động chưa?


Chúng ta tạo ra một chương trình Java nhỏ để kiểm tra xem chúng ta đã cài đặt đúng JDBC driver của MySQL chưa. Nếu chương trình chạy thành công thì nghĩa là trình điều khiển JDBC đã sẵn sàng cho các tác vụ phức tạp hơn. Bạn hãy tạo ra một file Connect.java với đoạn mã sau:

import java.sql.*;
public class Connect{
public static void main (String[] args){

Connection conn = null;
try{
String userName = “root”;
String password = “localhost”;
String url = “jdbc:mysql://127.0.0.1:3306/mysql”;
Class.forName (“com.mysql.jdbc.Driver”).newInstance ();

conn = DriverManager.getConnection (url,userName, password);
System.out.println (“Da ket noi CSDL”);
}
catch (Exception e){
System.err.println (“KHONG KET NOI DUOC”);
}
finally{
if (conn != null){
try{
conn.close ();
System.out.println (“Dong ket noi”);
}
catch (Exception e) { /* bo qua loi luc dong csdl */ }
}
}
}
}


Trước hết bạn hãy biên dịch file này ra mã bytecode nhưng để chạy nó, bạn cần chú ý đảm bảo MySQL đang chạy trên máy tính cá nhân của bạn. Nếu bạn đã cài đặt MySQL để nó chỉ chạy khi bạn gọi thì bạn hãy bật MySQL với câu lệnh mysqld-nt --console hay nếu bạn đã cài chương trình quản trị cơ sở dữ liệu này dưới hình thức một dịch vụ thì bạn có thể gõ net start mysql trong shell Run trong Windows.

Đoạn mã trên sử dụng cặp tên người sử dụng và mật khẩu là root/localhost với cơ sở dữ liệu là mysql. Nếu kết nối thành công, bạn sẽ thấy một màn hình như dưới đây xuất hiện.

javasun4

Chương trình trên sử dụng TCP/IP để kết nối vào hệ cơ sở dữ liệu MySQL.

* Phân tích

Để kết nối và sử dụng một cơ sở dữ liệu từ Java applet, servlet hay ứng dụng Java thì chúng ta cần thực hiện qua 3 bước:

1. Đăng kí/Nạp (các) driver

2. Thiết lập kết nối đến cơ sở dữ liệu

3. Gửi câu lệnh SQL và xử lý kết quả thu về

Bước đầu tiên để tạo ra một kết nối giữa ứng dụng Java và một cơ sở dữ liệu là đăng kí một JDBC driver với máy ảo Java (JVM) mà ứng dụng Java chạy trên đó. Với cơ chế kết nối truyền thống (sẽ nói trong phần cơ chế kết nối DataSource, thảo luận sau), thì kết nối và tất cả các hình thức giao tiếp với cơ sở dữ liệu đều do đối tượng DriverManager kiểm soát. Để thiết lập một đường kết nối, một JDBC driver thích hợp dùng cho cơ sở dữ liệu mục tiêu phải được đăng kí với đối tượng DriverManager.

Đặc tả JDBC chỉ ra rằng các JDBC driver được xem là sẽ tự đăng kí với đối tượng DriverManager một cách tự động khi chúng được nạp vào một JVM. Ví dụ đoạn mã sau sử dụng một bộ khởi tạo tĩnh để lần đầu tiên tạo ra một mẫu của JDBC driver mang tên persistentjava và sau đó đăng kí nó với DriverManager.

static {
java.sql.DriverManager.registerDriver(new
com.persistentjava.JdbcDriver()) ;
}

Việc đăng kí một driver đơn giản chỉ là việc nạp lớp driver vào JVM. Chúng ta có thể làm điều đó bằng một số cách khác nhau. Một trong những cách đó là thông qua

ClassLoader Class.forName(com.persistentjava.JdbcDriver) ;.

Một cách khác, không phổ biến lắm là dùng thuộc tính hệ thống jdbc.drivers. Chúng ta có thể dùng cách này theo 3 hình thức khác nhau:

Từ dòng lệnh:java -Djdb.drivers =com.persistentjava.JdbcDriver Connect

* Bên trong ứng dụng java:

System.setProperty(“jdbc.drivers”, “com.persistentjava.JdbcDriver”) ;

* Bằng cách thiết lập thuộc tính jdbc.drivers vào file thuộc tính hệ thống, nhưng nhìn chung là lại tùy thuộc vào hệ thống Bằng phương pháp tách các driver bằng một dấu phẩy, chúng ta có thể đăng kí nhiều driver thông qua kĩ thuật thuộc tính hệ thống ở trên. Một trong các lợi ích của kĩ thuật này là ở chỗ các driver có thể đưa vào và ra khỏi JVM mà không cần thay đổi mã (hoặc chỉ cần thay đổi ở mức tối thiểu). Nếu đăng kí nhiều driver, thứ tự ưu tiên của chúng như sau:

1) Các JDBC driver do thuộc tính jdbc.drivers đăng kí lúc khởi tạo JVM, và

2)Các JDBC driver được nạp động. Do thuộc tính jdbc. drivers chỉ được kiểm tra một lần vào lần gọi đầu tiên của phương thức DriverManager(), nên quan trọng là bạn phải đảm bảo rằng tất cả các driver được đăng kí đúng trước khi thiết lập kết nối.
Chú ý là có một số JVMs không tuân thủ đặc tả JVM và kết quả là các bộ khởi tạo tĩnh không phải lúc nào cũng làm việc thống nhất như mong muốn. Điều này dẫn tới việc có nhiều cách đăng kí một JDBC driver:

· Class.forName("com.persistentjava. JdbcDriver").newInstance() ;
· DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ;


Hai cách trên thường hoạt động tốt trong tất cả các JVM nên bạn có thể sử dụng chúng một cách thoải mái. Nhưng điều khác biệt là Class.forName() có thể chặn bắt một ClassNotFoundException, nên bạn cần bao mã đăng kí driver vào một bộ xử lý lỗi ngoại lệ thích hợp.
Ví dụ:

try{
Class.forName (“com.mysql.jdbc.Driver”).newInstance ();
}
catch (Exception e){
System.err.println (“KHONG KET NOI DUOC”);
}


Các sách về MySQL khuyến cáo bạn nên dùng cách trên. Phương thức Class.forname() nhận một chuỗi làm đối số. Trong trường hợp bạn dùng JDBC Driver của hãng MySQL AB cho MySQL bản 4.0 trở lên thì chuỗi đó là:

com.mysql.jdbc.Driver

Cần chú ý
là bạn không cần phải tạo ra một mẫu của driver và đăng kí nó với DriverManager vì việc gọi Class.forName() sẽ làm cho bạn điều đó một cách tự động.
Bước tiếp theo sau khi bạn đã đăng kí JDBC Driver là thực hiện kết nối. Toàn bộ công đoạn này được minh họa qua dòng mã sau:

Connection conn = DriverManager.getConnection(url, “myLogin”, “myPassword”);

Cách khác:
Connection conn;
conn = DriverManager.getConnection(url, “myLogin”, “myPassword”);

Đoạn mã trên rất tường minh. Phương thức getConnection() được gọi để thực hiện một kết nối thực sự đến phần mềm máy chủ cơ sở dữ liệu. Lớp DriverManager tạo ra một đối tượng Connection khi bạn gọi phương thức getConnection(). Phương thức này nhận một chuỗi URL làm đối số. Ví dụ, với MySQL thì chuỗi đó có thể là:

jdbc:mysql://127.0.0.1:3306/mysql hoặc jdbc:mysql://localhost/mydatabase

Chuỗi này tuân theo quy tắc sau đây: jdbc:: trong đó:
thường là driver hoặc cơ chế kết nối cơ sở dữ liệu

phụ thuộc vào , có thể thay đổi theo các nhà cung cấp driver mà nó có thể là mysql, db2, oracle hay odbc.
có thể chứa địa chỉ Internet cho các cơ sở dữ liệu ở xa. Phần này có thể gồm có tên host, mã số cổng, và tên của hệ thống cơ sở dữ liệu.

Chú ý là trong một số sách khác, công thức trên còn trình bày dưới dạng: jdbc:sub-protocol:database locator tuy về bản chất thì không có gì thay đổi.

Nếu một trong các driver mà bạn cung cấp nhận ra địa chỉ JDBC URL mà bạn cung cấp cho phương thức DriverManager.getConnection, thì driver đó sẽ thiết lập đường kết nối đến MySQL xác định trong JDBC URL.

Lớp DriverManager sẽ quản lý tất cả các chi tiết của việc thiết lập đường kết nối bên dưới nên bạn không cần phải quan tâm gì thêm.

Đường kết nối do phương thức DriverManager.getConnection trả về là một đường kết nối mở mà bạn có thể sử dụng để thông qua các lệnh JDBC nhằm gửi các lệnh SQL tới MySQL. Ở đây chúng ta có đối tượng conn chứa kết nối mở và chúng ta sẽ sử dụng chúng để thực hiện các ví dụ thao tác trên MySQL.
Powered By Blogger