`
jxb8901
  • 浏览: 166767 次
  • 性别: Icon_minigender_1
  • 来自: shenzhen
社区版块
存档分类
最新评论

UI开发模式对比:JSP、Android、Flex

 
阅读更多

前一篇文章分析了Java平台下不同类型WEB框架对开发模式的影响,多数Java领域的WEB框架都是聚焦于服务端MVC的实现,这些框架对View的支持,通常是基于标准的JSP或类似JSP的模板技术如Freemarker或Velocity。JSP或类JSP的模板技术已经是上个世纪的页面技术了,它能跟上时代的发展和技术的进步吗?

我们先看一段典型的JSP页面代码(摘自Struts2样例代码):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="messageStore.message" /></h2>
<p>I've said hello <s:property value="helloCount" /> times!</p>
<p><s:property value="messageStore" /></p>
</body>
</html>

再看一段Android平台下UI开发的代码(摘自Android开发手册):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="I am a Button" />
</LinearLayout>

还可以看看Flex UI代码(摘自Flex开发手册):

<?xml version="1.0"?>
<!-- containers\layouts\VBoxSimple.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:VBox borderStyle="solid" 
        paddingTop="10"
        paddingBottom="10" 
        paddingLeft="10" 
        paddingRight="10">
        
        <mx:Button id="fname" label="Button 1"/>
        <mx:Button id="lname" label="Button 2"/>
        <mx:Button id="addr1" label="Button 3"/>
        <mx:ComboBox id="state">
              <mx:ArrayCollection>
                 <mx:String>ComboBox 1</mx:String>
              </mx:ArrayCollection>         
        </mx:ComboBox>
    </mx:VBox>
</mx:Application>

对比上面三段代码,可以看出JSP页面技术与Android及Flex UI技术的差异:

  • 命令式 vs. 声明式:JSP是命令式代码编写方式,而Android及Flex是声明式;
  • 组件化:JSP代码的组件能力很差,主要通过标签库tag lib实现展现逻辑的利用,而Android及Flex都有专门设计的组件机制;
  • 布局支持:JSP对页面展示的布局没有支持,Android及Flex都有大量的布局组件实现声明式布局;
  • 数据组件:JSP没有支持,Android有ContentProvider抽象,Flex则有各种数据对象,用于存取本地或远程数据

声明式和组件化应该是必然的趋势,由此可见JSP技术的落后。但遗憾的是目前Java平台还没有什么技术可以取代JSP:JSF是基于JSP的新一代页面技术,但从设计上看JSF相比Android和Flex还较大差距;GWT之类的框架也可以取代JSP,但GWT走向了纯命令式的相反方向。

 

如果向Android和Flex的开发模式看齐,基于Java平台开发WEB应用的最佳方式应该是HTML+JS+JSON。HTML也是声明式的,本质上和前面Android及Flex的UI技术类似;JS相当于Android中的Java及Flex中的ActionScript,JSON用于客户端与服务端进行数据交换。只是HTML+JS+JSON也有其不足之处:

  • HTML内建组件(tag)相比Flex及Android的组件,其表现力不够,比如HTML没有布局组件,HTML的table相比Flex的DataGrid组件过于低层;
  • HTML本身的设计并非是用于UI,比如其没有考虑数据绑定机制,也没有数据组件之类的概念;
  • HTML没有组件定制能力,而Android及Flex都设计了自定义组件的机制;

由于存在以上不足,就出现了EasyUI/DWZ等声明式的UI框架,这也是WEB开发模式浅析中建议采用EasyUI/DWZ等框架的理由。

 

回到Java世界,是否可以在服务端设计一种声明式、组件化的页面技术用于取代传统JSP页面技术呢?

 

 

分享到:
评论

相关推荐

    安卓Android源码——ui开发类库示例源码.zip

    1. **Android UI组件**:Android SDK包含了多种内置的UI组件,如按钮(Button)、文本框(EditText)、图像视图(ImageView)、布局(Layouts)等。这些组件是构建Android应用的基础,通过XML布局文件或代码动态创建...

    使用Flex4.5开发Android应用程序

    总结,使用Flex 4.5开发Android应用程序可以借助其强大的UI组件库、良好的编程模型和对原生API的访问能力,实现高效、跨平台的移动应用开发。虽然现在Flex可能不再是主流的Android开发工具,但了解其工作原理和优势...

    Flex3与Flex4对比

    ### Flex3与Flex4对比分析 #### 一、概述 随着技术的发展,Adobe Flex平台也在不断进化以满足日益增长的应用需求。本文旨在详细介绍Flex3与Flex4之间的主要区别,特别是Flex4相较于Flex3的新功能与改进之处。通过...

    精彩绝伦的AndroidUI设计:响应式用户界面与设计模式

    资源名称:精彩绝伦的Android UI设计:响应式用户界面与设计模式资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    android ui设计:响应式用户界面与设计模式

    在Android UI设计中,响应式用户界面(Responsive User Interface)和设计模式是构建高效、美观且易用的应用程序的关键元素。响应式UI确保了应用程序在不同屏幕尺寸和设备上都能提供一致的用户体验,而设计模式则...

    android ui源码:自己设计的一个精美布局

    在Android开发中,UI设计是至关重要的,因为它直接影响到用户对应用的第一印象和使用体验。本文将深入探讨如何自己设计一个精美的布局,基于Android UI设计原则和源码实现。我们将从以下几个方面来展开讨论: 1. **...

    适用于Android的UI表单验证库:check_mark:-Android开发

    :check_mark:Android的UI表单验证库由Dhaval Patel及其贡献者使用:red_heart:Built内置。Android的另一个UI表单验证库。 它是高度可定制的,并且易于使用。 该库将可以使用:check_mark:Android的UI表单验证库由...

    《Android UI设计》PDF

    许多开发人员需要一本Android UI设计入门级教程,其能够同时针对移动UI的设计模式和碎片化解决方案进行深入分析。 《Android UI设计》面向创建移动应用的产品经理、设计师和开发者,系统讲解了从事Android UI设计...

    Flex UI Design For Cairngorm

    在Flex开发中,UI设计不仅仅是关于外观和感觉,更涉及到用户体验的优化和应用程序性能的提升。一个好的UI设计可以显著增强用户对应用程序的满意度,从而提高用户的留存率和参与度。在Cairngorm框架下,UI设计还扮演...

    至理:精通Flex网络开发技术光盘源码

    这个“至理:精通Flex网络开发技术光盘源码”很显然是一个关于Flex开发的学习资源,包含了从第1章到第30章的完整教程源代码。 在Flex开发中,核心概念包括: 1. **Flex SDK**: 这是Flex开发的基础,提供了编译Flex...

    android UI界面开发图片

    在Android平台上进行UI界面开发时,图片资源是至关重要的元素,它们不仅决定了应用的视觉吸引力,也直接影响用户体验。本文将围绕“Android UI界面开发图片”这一主题,深入探讨相关知识点,帮助开发者创建出美观且...

    [Android] 动态 UI 开发教程 Android Fragments 实现 英文版

    [Packt Publishing] 动态 UI 开发教程 Android Fragments 实现 英文版 [Packt Publishing] Creating Dynamic UI with Android Fragments E Book ☆ 图书概要:☆ Leverage the power of Android fragments to ...

    老罗Android开发视频教程-Android常用UI控件编程【32集】

    教程名称: 老罗Android开发视频教程-Android常用UI控件编程【32集】【】Android常用UI控件编程第七集【】Android常用UI控件编程第二十三集【】Android常用UI控件编程第二十九集【】Android常用UI控件编程第二十二...

    跨语言UI构建:JS与Android Activity联动探索.zip

    JS与Android Activity的联动探索,旨在通过桥接技术实现JS代码与Android原生UI组件的直接交互,从而构建出既具有Web开发的高效性,又不失原生应用性能的UI界面。 这一技术路线通常依赖于WebView或专门的跨平台框架...

    uiautomatorviewer 工具,可支持android 9.0

    - "eclipse":虽然Eclipse曾经是Android开发的主要IDE,但现在更常见的是使用Android Studio,不过uiautomatorviewer可以在两者中运行,为开发者提供了灵活性。 **压缩包子文件的文件名称解析** - "ddmlib.jar":...

    Android开发UI实践

    本章将深入探讨Android UI开发的关键知识点,包括UI设计的基本原则、常见的UI设计模式以及如何构建高质量的Android应用。 #### 二、Android UI设计现状 自上一次开发者大会以来,Android平台经历了快速的发展。...

    flex开发框架

    在本文中,我们将深入探讨Flex的核心概念、主要特点、开发环境以及如何使用Flex进行Android应用开发。 Flex是一种开放源代码的框架,它使用MXML和ActionScript两种语言来构建用户界面。MXML是一种声明式语言,类似...

    flex同jsp的结合

    Flex是一种用于创建富互联网应用程序(RIA)的前端开发框架,主要使用ActionScript编程语言和MXML标记语言。...在实际开发过程中,需要对Flex、JSP以及AMF有深入理解,才能充分发挥这种结合的优势。

    了解Android开发规范:性能及UI优化是什么样的?

    本文带您全面了解Android开发规范,其中包括Android编码规范,Android性能优化和Android UI优化,读完绝对不会后悔的好文章。 一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量...

Global site tag (gtag.js) - Google Analytics