Máy ứng dụng của Google cho Java - Phần 1: Rồ máy lên

Tóm tắt: Bạn có nhớ khi mà Máy ứng dụng của Google (Google App Engine) chỉ

dành cho những người lập trình Python (Pythonistas)không? Những ngày đen tối.

Google Inc đã mở nền tảng điện toán đám mây của mình cho các nhà phát triển

Java™ trong tháng 4 năm 2009. Trong loạt bài viết ba phần này, Rick Hightower,

một huấn luyện viên và tác giả viết về công nghệ Java giúp bạn bắt đầu với nền

tảng tin cậy, vững chãi và đầy vui thú này để phát triển ứng dụng dựa trên Java.

Trong bài này, bạn sẽ có được một tổng quan về lý do tại sao Máy ứng dụng của

Google cho Java có thể là nền tảng để tiếp tục phát triển những ứng dụng sát thủ

(N.D: “killer app”tiếng lóng của các lập trình viên, để chỉ một ứng dụng được viết

tài tình, đặc biệt hữu ích, hàm ý nó giống như các sát thủ đối với người chơi những

trò chơi điện tử), có khả năng mở rộng cao của bạn, sau đó bắt đầu sử dụng các

trình cắm thêm (Plugin) củaGoogle cho Eclipse để xây dựng hai ứng dụng ví dụ:

một dựa trên bộ công cụ Web của Google (Google Web Toolkit -GWT) và một

dựa trên API Servlet của Java. Bạn sẽ tự mình tìm hiểu Máy ứng dụng của Google

cho Java làm nên sự khác biệt như thế nào, cả trong việc xây dựng một ứng dụng

từ đầu lẫn trong việc triển khai nó dành cho số người truy cập lên đến năm triệu.

(Và đó mới chỉ là phiên bản miễn phí.)

pdf39 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 1864 | Lượt tải: 0download
Tóm tắt nội dung Máy ứng dụng của Google cho Java - Phần 1: Rồ máy lên, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
* 
 * This is the entry point method. 
 */ 
 public void onModuleLoad() { 
 final Button sendButton = new Button("Send"); 
 final TextBox nameField = new TextBox(); 
 nameField.setText("GWT User"); 
 // You can add style names to widgets 
 sendButton.addStyleName("sendButton"); 
 // Add the nameField and sendButton to the RootPanel 
 // Use RootPanel.get() to get the entire body element 
 RootPanel.get("nameFieldContainer").add(nameField); 
 RootPanel.get("sendButtonContainer").add(sendButton); 
 // Focus the cursor on the name field when the app loads 
 nameField.setFocus(true); 
 nameField.selectAll(); 
 // Create the popup dialog box 
 final DialogBox dialogBox = new DialogBox(); 
 dialogBox.setText("Remote Procedure Call"); 
 dialogBox.setAnimationEnabled(true); 
 final Button closeButton = new Button("Close"); 
 // You can set the id of a widget by accessing its Element 
 closeButton.getElement().setId("closeButton"); 
 final Label textToServerLabel = new Label(); 
 final HTML serverResponseLabel = new HTML(); 
 VerticalPanel dialogVPanel = new VerticalPanel(); 
 dialogVPanel.addStyleName("dialogVPanel"); 
 dialogVPanel.add(new HTML("Sending name to the server:")); 
 dialogVPanel.add(textToServerLabel); 
 dialogVPanel.add(new HTML("Server replies:")); 
 dialogVPanel.add(serverResponseLabel); 
 dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT); 
 dialogVPanel.add(closeButton); 
 dialogBox.setWidget(dialogVPanel); 
 // Add a handler to close the DialogBox 
 closeButton.addClickHandler(new ClickHandler() { 
 public void onClick(ClickEvent event) { 
 dialogBox.hide(); 
 sendButton.setEnabled(true); 
 sendButton.setFocus(true); 
 } 
 }); 
 // Create a handler for the sendButton and nameField 
 class MyHandler implements ClickHandler, KeyUpHandler { 
 /** 
 * Fired when the user clicks on the sendButton. 
 */ 
 public void onClick(ClickEvent event) { 
 sendNameToServer(); 
 } 
 /** 
 * Fired when the user types in the nameField. 
 */ 
 public void onKeyUp(KeyUpEvent event) { 
 if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { 
 sendNameToServer(); 
 } 
 } 
 /** 
 * Send the name from the nameField to the server and wait for a response. 
 */ 
 private void sendNameToServer() { 
 sendButton.setEnabled(false); 
 String textToServer = nameField.getText(); 
 textToServerLabel.setText(textToServer); 
 serverResponseLabel.setText(""); 
 greetingService.greetServer(textToServer, 
 new AsyncCallback() { 
 public void onFailure(Throwable caught) { 
 // Show the RPC error message to the user 
 dialogBox 
 .setText("Remote Procedure Call - Failure"); 
 serverResponseLabel 
 .addStyleName("serverResponseLabelError"); 
 serverResponseLabel.setHTML(SERVER_ERROR); 
 dialogBox.center(); 
 closeButton.setFocus(true); 
 } 
 public void onSuccess(String result) { 
 dialogBox.setText("Remote Procedure Call"); 
 serverResponseLabel 
 .removeStyleName("serverResponseLabelError"); 
 serverResponseLabel.setHTML(result); 
 dialogBox.center(); 
 closeButton.setFocus(true); 
 } 
 }); 
 } 
 } 
 // Add a handler to send the name to the server 
 MyHandler handler = new MyHandler(); 
 sendButton.addClickHandler(handler); 
 nameField.addKeyUpHandler(handler); 
 } 
} 
Bộ mô tả triển khai Web (web.xml, như thấy trong Liệt kê 9) ánh xạ 
GreetingService như một nguồn tài nguyên Web dựa trên servlet. Nó ánh xạ 
GreetingService dưới tên /simplegwtapp/greet sao cho SimpleGWTApp có thể nạp 
nó và thực hiện cuộc gọi đến nó. Bộ mô tả triển khai Web cũng biểu thị rằng 
SimpleGWTApp.html là trang chào mừng cho ứng dụng, như vậy nó luôn luôn 
nạp. 
Liệt kê 9.Bộ mô tả triển khai để đặt cấu hình GreetingServiceImpl 
(war/WEB-INF/web.xml) 
<!DOCTYPE web-app 
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
 ""> 
 SimpleGWTApp.html 
 greetServlet 
 gaej.example.server.GreetingServiceImpl 
 greetServlet 
 /simplegwtapp/greet 
Mặt tiền trang HTML là SimpleGWTApp.html, được hiển thị trong Liệt kê 10. 
Đây là trang để nạp simplegwtapp.js và simplegwtapp.nocache.js, là mã JavaScript 
được GWT tạo từ mã Java của bạn. Như đã đề cập ở trên, mã này lưu trữ trong thư 
mục src thuộc gói gaej.example.client (từ các Liệt kê 6, 7 và 8). 
Liệt kê 10. Trang HTML để hiển thị GUI của GWT 
(war/SimpleGWTApp.html) 
 Web Application Starter Project 
 <script type="text/javascript" language="javascript" 
 src="simplegwtapp/simplegwtapp.nocache.js"> 
 <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' 
 style="position:absolute;width:0;height:0;border:0"> 
 Web Application Starter Project 
 Please enter your name: 
Với GWT, bạn điều khiển dáng vẻ của ứng dụng của bạn thông qua CSS, như đã 
chứng tỏ trong Liệt kê 11: 
Liệt kê 11. Bảng định kiểu cho GUI của GWT (war/SimpleGWTApp.css) 
/** Add css rules here for your application. */ 
/** Example rules used by the template application (remove for your app) */ 
h1 { 
 font-size: 2em; 
 font-weight: bold; 
 color: #777777; 
 margin: 40px 0px 70px; 
 text-align: center; 
} 
.sendButton { 
 display: block; 
 font-size: 16pt; 
} 
/** Most GWT widgets already have a style name defined */ 
.gwt-DialogBox { 
 width: 400px; 
} 
.dialogVPanel { 
 margin: 5px; 
} 
.serverResponseLabelError { 
 color: red; 
} 
/** Set ids using widget.getElement().setId("idOfElement") */ 
#closeButton { 
 margin: 15px 6px 6px; 
} 
Triển khai Máy ứng dụng của Google 
Một khi bạn đã tạo ra ứng dụng sát thủ tiếp theo của thế giới (vì chúng ta thực sự 
cần một ứng dụng lời chào thân thiện với người sử dụng), bạn sẽ muốn triển khai 
nó. Toàn bộ vấn đề sử dụng Máy ứng dụng của Google là bạn có thể triển khai 
ứng dụng của mình trên cơ sở hạ tầng vững chắc của Google, làm cho nó dễ dàng 
điều chỉnh hơn. Máy ứng dụng của Google được thiết kế để cung cấp một nền tảng 
cho việc xây dựng các ứng dụng có thể mở rộng "để phát triển từ một đến hàng 
triệu người dùng mà không nhức đầu về cơ sở hạ tầng" (như đã nêu trên trang chủ 
Máy ứng dụng - App Engine). Để sử dụng cơ sở hạ tầng này, bạn cần một tài 
khoản của Máy ứng dụng của Google cho Java. 
Giống như nhiều thứ trong đời, thời gian đầu là miễn phí. Phiên bản miễn phí của 
Máy ứng dụng cho Java cung cấp cho ứng dụng đã triển khai đủ CPU, băng thông 
và lượng lưu trữ để phục vụ cho khoảng 5 triệu lượt truy cập trang. Sau đó, cần 
phải trả tiền khi bạn tiếp tục. (Cũng nên nhớ rằng cái sẵn có khi viết bài này là một 
bản phát hành xem trước của nền tảng Máy ứng dụng cho Java.) 
Một khi bạn nhận được tài khoản, bạn sẽ thấy một danh sách còn bỏ trống các ứng 
dụng tại trang Web Máy ứng dụng cho Java. Nhấn vào nút Create New 
Application (Tạo ứng dụng mới) và một biểu mẫu giống như trong Hình 8 sẽ xuất 
hiện. Nhập tên ứng dụng duy nhất và một mô tả, sau đó bạn sẽ thấy một thông báo 
xác nhận với mã nhận dạng (identifier) ứng dụng của bạn. 
Mã nhận dạng cũng thuộc về tệp app.yaml của ứng dụng của bạn. Lưu ý rằng 
không thể thay đổi mã nhận dạng. Nếu bạn sử dụng việc xác thực của Google cho 
các ứng dụng của bạn, thì "GAEj Article For Rick Part 1" sẽ được hiển thị trong 
trang Sign In (Đăng nhập) khi bạn truy cập vào ứng dụng của mình. Bạn sẽ sử 
dụng gaejarticleforrick để triển khai các ứng dụng lên Máy ứng dụng của Google 
bằng trình cắm thêm Eclipse của Máy ứng dụng cho Java. 
Hình 8. Tạo ứng dụng mới của Máy ứng dụng cho Java 
Sau khi bạn thiết lập mã nhận dạng (ID) của ứng dụng, bạn có thể triển khai ứng 
dụng của mình từ Eclipse. Đầu tiên, nhấn vào nút của thanh công cụ trông giống 
như biểu tượng Máy ứng dụng của Google (một động cơ phản lực có cánh và 
đuôi), như chỉ ra trong Hình 9: 
Hình 9. Trình cắm thêm Eclipse của Máy ứng dụng cho Java 
Bạn có thể cần phải bảo đảm chắc chắn dự án Máy ứng dụng cho Java của bạn 
được đánh dấu chọn trước khi nhấn vào Deploy (Triển khai) trong hộp thoại như 
thấy trong Hình 10. Bạn sẽ được nhắc cung cấp mã ủy nhiệm Google của bạn, đó 
là địa chỉ và tên người dùng thư điện tử của bạn. 
Hình 10. Triển khai dự án 
Hộp thoại trong Hình 10 có một đường liên kết tới "App Engine Project setting" 
(Thiết lập dự án Máy ứng dụng). Nhấn vào đường liên kết này (cũng có thể truy 
cập từ tệp thiết lập dự án) và nhập ID của ứng dụng (trong trường hợp này là 
gaejarticleforrick), như trong Hình 11. Sau khi bạn điền vào ID của ứng dụng, 
nhấn OK, rồi nhấn Deploy. 
Hình 11. Thiết lập dự án cho máy ứng dụng của Google 
Sau khi bạn đã triển khai ứng dụng của mình, nó sẽ có sẵn tại http://<application 
id>.appspot.com/. Bạn cũng có thể thấy ứng dụng này đang hoạt động tại 
Kết luận 
Đến đây kết thúc Phần 1 của bài giới thiệu của tôi về Máy ứng dụng của Google 
cho Java. Cho đến nay, bạn đã thu được một tổng quan về Máy ứng dụng cho Java 
là gì và đã thực hiện các bước đầu tiên bằng việc sử dụng Trình cắm thêm của 
Google cho Eclipse của Máy ứng dụng cho Java. Bạn tạo ra hai ứng dụng khởi 
động nhỏ (một ứng dụng dựa trên servlet còn cái kia dựa trên GWT) và sau đó đã 
triển khai ứng dụng GWT cho nền tảng của Máy ứng dụng Google này. 
Các ví dụ cho đến nay đã chứng tỏ việc tạo công cụ và chức năng giúp Máy ứng 
dụng dễ dàng tạo và triển khai các ứng dụng Java mở rộng được — tiềm năng lên 
đến quy mô như của YouTube hoặc Facebook. Trong Phần 2, bạn sẽ tiếp tục khám 
phá những cơ hội sẵn có cho các nhà phát triển Java làm việc trên Máy ứng dụng 
cho Java. Rời khỏi các ví dụ ứng dụng đã trình bày trong bài viết này, bạn sẽ xây 
dựng một ứng dụng quản lý mối liên hệ tùy chỉnh. Ứng dụng này cũng sẽ là trọng 
tâm của các bài tập trong Phần 3, chúng đi sâu vào kho lưu trữ dữ liệu của Máy 
ứng dụng cho Java và mặt tiền GUI của nó. 
Mục lục 
 Về Máy ứng dụng của Google cho Java 
 Tạo ứng dụng đầu tiên của bạn bằng Máy ứng dụng cho Java 
 Tạo một Máy ứng dụng cho ứng dụng Java/GWT 
 Triển khai Máy ứng dụng của Google 
 Kết luận 

File đính kèm:

  • pdfMáy ứng dụng của Google cho Java Phần 1 Rồ máy lên.pdf
Tài liệu liên quan