Tin tức mới

Google App Engine, không khó để sử dụng

[TapChiLapTrinh] Bạn đang có một ứng dụng Java EE cực hay muốn phát hành để khoe với người khác, hay chỉ đơn giản là bạn đang làm bài tập và muốn được thử trực tiếp trên môi trường thực. Nhưng bạn biết đó, muốn kiếm được được một host miễn phí hỗ trợ Java EE đâu phải dễ, lại còn lằng nhằng mấy chuyện upload, deploy nữa chứ. Nghĩ đến đã muốn nản rồi nhỉ. Đó là chuyện của ngày xưa thôi, còn ngày nay, bạn không còn lo lắng mấy vấn đề cỏn con đó nữa, cái gì mà hay vậy? GOOGLE APP ENGINE. Vậy nó là cái gì?

Google App Engine (GAE) cho phép bạn chạy các ứng dụng web trên hạ tầng của Google. Bạn dễ dàng xây dựng, bảo trì, tăng lưu lượng truy cập và tăng dung lượng lưu trữ. Với App Engine, không có máy chủ để bảo trì: Bạn chỉ cần tải lên ứng dụng của bạn, và nó sẵn sàng để phục vụ người dùng.

Bạn có thể dùng tên miền của bạn hoặc dùng tên miền miễn phí của GAE có đuôi appspot.com. Bạn có thể chia sẻ các ứng dụng của bạn với thế giới, hoặc giới hạn truy cập cho các thành viên của tổ chức của bạn.

GAE hỗ trợ các ứng dụng viết bằng nhiều ngôn ngữ lập trình khác nhau như Java, Python và Go.

Với GAE, bạn chỉ phải trả cho những gì bạn sử dụng. Không có chi phí thiết lập ban đầu và không có phí định kỳ. Các nguồn tài nguyên ứng dụng của bạn sử dụng, chẳng hạn như lưu trữ và băng thông, được đo bằng gigabyte, với mức giá cạnh tranh. Bạn kiểm soát số tiền tối đa các nguồn lực ứng dụng của bạn có thể tiêu thụ, do đó, nó luôn luôn nằm trong phạm vi ngân sách của mình.

Tất cả các ứng dụng có thể sử dụng lên đến 1GB dung lượng lưu trữ và đủ CPU và băng thông để hỗ trợ một ứng dụng hiệu quả phục vụ cho khoảng 5 triệu lượt xem một tháng, hoàn toàn miễn phí. Khi bạn cần nhiều hơn con số kia bạn mới cần phải nghĩ đến chuyện trả tiền cho Google, nhưng tôi nghĩ đó là chuyện của doanh nghiệp, còn chuyện của lập trình viên thì theo tôi con số kia là tạm ổn rồi.

Những ông lớn nào đang sử dụng GAE ?GAE1

(Nguồn https://cloud.google.com/customers/)

Giới thiệu như vậy chắc là đã đủ, bây giờ chúng ta sẽ bắt đầu các bước để sử dụng GAE.

Bước 1: Đầu tiên bạn sẽ cần một tài khoản Google, tiếp theo bạn vào trang https://appengine.google.com để bắt đầu tạo ứng dụng. Google sẽ bắt bạn xác minh tài khoản của bạn bằng số điện thoại di động (yên tâm là Google có hỗ trợ cho số điện thoại Việt Nam nhé, bước xác minh này có lẽ sẽ hơi mất thời gian chút vì không phải lúc nào Google cũng gửi code về ngay). Sau khi xác minh xong bạn có thể tạo ứng dụng được rồi. Bạn cũng chú ý là Application Id phải là duy nhất trên toàn hệ thống của GAE và chưa có ai dùng, nên bạn không thể dùng id mà tôi đang dùng được nhé.

GAE2

Bước 2: Cài đặt môi trường phát triển

Bạn sẽ cần IDE Eclipse, nếu chưa có bạn có thể tải về bản mới nhất tại đây http://www.eclipse.org/downloads

Cài đặt thêm plugin Google App Engine cho Eclipse 4.2 (Juno):

–          Trên thanh trình đơn vụ chọn Help > Install New Software….

–          Trong ô “Work with”, bạn nhập vào “https://dl.google.com/eclipse/plugin/4.2”

(Nếu bạn dùng Eclipse bản cũ hơn bạn có thể xem thêm thông tin tại trang web sau: https://developers.google.com/appengine/docs/java/tools/eclipse)

GAE3

Khởi động lại Eclipse sau khi thêm xong plugin.

a)      Tạo project mới trong Eclipse

Trên thanh trình đơn bạn chọn File > New > Web Application Project

GEA4

Đến đây bạn có thể bắt tay vào code ứng dụng được rồi.

b)      Chạy ứng dụng của bạn trên local

Nhấp chuột phải vào project của bạn và chọn Run as… > Web Application.

GAE5

Ứng dụng sẽ được chạy trên cổng 8080 (hoặc cổng khác phụ thuộc vào cấu hình của bạn), với tôi ứng dụng sẽ chạy trên trình duyệt với URL: http://localhost:8080/hellogoogleapp.

c)       Deploy ứng dụng lên Server của Google App.

Trước tiên bạn cần cấu hình Application Id cho Eclipse. Nhấp chuột phải vào project của bạn và chọn Properties > Google > App Engine và nhập Application Id của bạn.

GAE6

Để triển khai ứng dụng bạn nhấp chuột phải vào project > Google > Deploy to app engine.

Vậy là xong, giờ tôi có thể vào http://hellogoogleapp.appspot.com để xem ứng dụng của mình rồi.

Tôi đã giới thiệu xong và cũng đã có một ứng dụng đầu tiên với GAE. Còn bạn, bạn có muốn trải nghiệm với GAE không nhỉ? Bắt tay ngay thôi nhỉ.

Bài viết tới tôi sẽ giới thiệu tới bạn cách thức đơn giản để phát triển một ứng dụng trên Facebook với Java và GAE, chờ nhé sẽ nhanh thôi…

Lê Thị Hảo


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

8 thoughts on “Google App Engine, không khó để sử dụng

  1. Hay quá thầy ơi, hi vọng là sẽ có nhiều bàu viết bổ ích hơn nữa

  2. Quá hay thầy ơi!em có vài bài tập về web muốn đưa lên đâu đó để deploy mà không biết cách,bài viết này giúp em rất nhiều,hy vọng thầy sớm hướng dẫn cách up web viết bằng asp,aspx,php hay một số ngôn ngữ khác cho đa dạng@@

  3. Add toolkit rồi , khởi động lại eclipse rồi mà em vào file -> new ->ko có wed java project

  4. Chào anh Khoa,

    Em thử tạo app connect với google cloud sql nhưng lỗi hoài. Anh có app demo nào về database connection ko ạ? Cho em tham khảo với

  5. Khi deploy thì gặp lỗi này thì xử lý sao thầy
    ———— Deploying frontend ————

    Preparing to deploy:
    Created staging directory at: ‘C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp’
    Scanning for jsp files.
    Compiling jsp files.
    com.google.appengine.tools.admin.JspCompilationException: Failed to compile jsp files.
    Exception in thread “main” org.apache.jasper.JasperException: The absolute uri: http://www.springframework.org/tags cannot be resolved in either web.xml or the jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
    at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:315)
    at org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:148)
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:386)
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:449)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1396)
    at org.apache.jasper.compiler.Parser.parse(Parser.java:130)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
    at org.apache.jasper.JspC.processFile(JspC.java:1192)
    at org.apache.jasper.JspC.execute(JspC.java:1341)
    at com.google.appengine.tools.development.LocalJspC.main(LocalJspC.java:35)
    Error while executing: C:\Program Files\Java\jdk1.8.0_141\bin\javaw.exe -classpath /C:/APP/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.34/appengine-java-sdk-1.9.34/lib/impl/appengine-api-labs.jar;/C:/APP/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.34/appengine-java-sdk-1.9.34/lib/impl/appengine-api-stubs.jar;/C:/APP/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.34/appengine-java-sdk-1.9.34/lib/impl/appengine-api.jar;/C:/APP/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.34/appengine-java-sdk-1.9.34/lib/impl/appengine-local-runtime.jar;/C:/APP/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.34/appengine-java-sdk-1.9.34/lib/impl/google_sql.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\appengine-local-runtime-shared.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\el-api.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\jsp\repackaged-appengine-ant-1.7.1.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\jsp\repackaged-appengine-ant-launcher-1.7.1.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\jsp\repackaged-appengine-jasper-6.0.29.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\jsp\repackaged-appengine-jasper-el-6.0.29.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\jsp\repackaged-appengine-tomcat-juli-6.0.29.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\jsp-api.jar;C:\APP\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.9.34\appengine-java-sdk-1.9.34\lib\shared\servlet-api.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\classes;C:\Users\admin\AppData\Local\Temp\1501051827461-0;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-ant-1.7.1.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-ant-launcher-1.7.1.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-jakarta-jstl-1.1.2.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-jakarta-standard-1.1.2.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-jasper-6.0.29.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-jasper-el-6.0.29.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-jasper-jdt-6.0.29.jar;C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\lib\repackaged-appengine-tomcat-juli-6.0.29.jar; com.google.appengine.tools.development.LocalJspC -uriroot C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp -p org.apache.jsp -l -v -webinc C:\Users\admin\AppData\Local\Temp\appcfg1884028531225488207.tmp\WEB-INF\generated_web.xml -d C:\Users\admin\AppData\Local\Temp\1501051827461-0 -javaEncoding UTF-8

Leave a Reply

Your email address will not be published. Required fields are marked *