首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Vaadin 实现全堆栈 Java Web 开发(6)

使用 Vaadin 实现全堆栈 Java Web 开发(6)

用 Python 实现 Vaadin 编程 根据设计,Vaadin 与 Java 之外的其他编程语言是兼容的,而且支持 JVM 生态系统中的许多编程语言(参见 Wikipedia 的  ,这些编程语言包括        Python(通过 Jython)、Groovy 和 Scala)。
本教程中的最后一个示例用 Python 重写了 article-viewer 应用程序。
在成功加载并运行此示例之前,必须安装下列附加工具:
  • Jython 2.7 或更高版本。
  • PyDev 4.3.0 或更高版本,已使用 Jython 进行测试(请参见   文档信息,了解关于如何在 Eclipse          上安装 PyDev 的信息)。
  • Vaadin 6.8.16(或最新的 6.x)JAR;您必须将这个 JAR 文件放在 WebContent/WEB-INF/lib 文件夹中。
您可以在 JythonVaadin.zip 存档文件中找到此示例的 Eclipse 项目(参见  )。将此存档文件导入            Eclipse 中来运行该示例。
请注意 Java 版本的代码结构的相似性。如果查看 Web 应用程序的 web.xml 文件,如清单 6 所示,您就会发现,它加载了专门的 Python 解释器              servlet,而不是常规的 VaadinServlet。
清单 6.  JythonVaadin 应用程序的 web.xml                描述符
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" ...>
   <display-name>JythonVaadin</display-name>
   ...
   <servlet>
    <servlet-name>Jythonvaadin Application</servlet-name>
    <servlet-class>com.example.jythonvaadin.PythonServlet</servlet-class>
    <init-param>
        <description>Vaadin application class to start</description>
        <param-name>application</param-name>
        <param-value>PythonArticleViewer</param-value>
    </init-param>
  ...




在 PythonServlet 类中,Jython 解释器已加载并与 PythonArticleViewer.py 源文件一起提供,如清单 7  所示。
清单 7.  实例化 Jython 解释器的    PythonServlet
1
2
3
4
5
6
7
...
PythonInterpreter interpreter = new PythonInterpreter();   
        interpreter.exec("from "+applicationModuleName+" import "+applicationClassName);
        PyObject pyObj = interpreter.get(applicationClassName).__call__();
        Application pyApp = (Application)pyObj.__tojava__(Application.class);
        applicationClass = pyApp.getClass();
...




清单 8 显示了通过 Vaadin 创建 article-viewer UI 的部分 Python 代码。如果您熟悉 Python 语言,就可以看出这段代码与 Java  版本之间的相似性。
清单 8.  Python article-viewer Web    应用程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from com.vaadin import Application
from com.vaadin.event import ItemClickEvent
from java.lang import String
from com.vaadin.terminal import ExternalResource
...
class PythonArticleViewer(Application, ItemClickEvent.ItemClickListener):
    def __init__(self):
        pass
     
    def init(self):
      ...
      mainWindow = Window("Python Article View")
       vertical = VerticalLayout()
         
        vertical.setMargin(True)
        horiz = HorizontalLayout()
        horiz.addStyleName("outlined")
        self.table = Table("Select article")
        self.table.addContainerProperty("Year", String().getClass(), None)
        self.table.addContainerProperty("Article", String().getClass(), None)
         
        for idx, row in enumerate(self.listdata):
            self.table.addItem(self.getData(row) , idx)
            
        ...
        vertical.setSizeFull()
        vertical.addComponent(horiz)
        vertical.setExpandRatio(horiz,1)

        mainWindow.addComponent(vertical)
        self.setMainWindow(mainWindow)
         
    def itemClick(self, event):
       ...




结束语Vaadin 通过提供全堆栈 Java 开发解决方案提高了 Java Web 开发人员的生产力。您可以利用浏览器创新中的最新成果来创建 UI,这些创新成果包括  HTML5、CSS、Ajax 和 JavaScript,所有这些都无需牺牲您的 Java IDE 的舒适度。Vaadin UI 可以使用 Java  代码,以编程方式进行创建,或者以声明方式在 HTML 设计文档中进行创建。Vaadin 甚至还支持使用其他 JVM 支持的编程语言(包括  Python)进行编码。丰富的可用增件(add-on)库使您能够轻松地将功能添加到您的应用程序中。
您使用 Vaadin 和标准 Java EE 技术创建的应用程序可以轻松地在云中进行部署。请转到我的 “ ” 教程,迅速将一个完整的 Web 应用程序部署到 IBM Bluemix 云中。
返回列表