`
lgx522
  • 浏览: 125838 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java的表示层,到底该怎么办?

    博客分类:
  • Java
阅读更多
Java做老大很久了,而Java的表示层难用也已经很久了。

经过数年的折腾,Java已经证明了自己在服务器端的巨大优势,“强”而“稳”,高扩展、高安全、高维护。实在是面对复杂应用的架构师之首选。
此外,Java起家时一直所追求的平台无关,也瓜熟蒂落。有跨平台需求的各大产商们,纷纷用平台无关的Swing构造自己的基础软件产品。各类智能设备,也都大量应用Java技术。
不论如何,Java确实已经成功地证明了自己。这种虚拟机层面的技术亦将长久地生存发展下去。

然而再伟大的技术也有缺憾,正如伟大的C语言始终难做GUI。而Java最大的遗憾,也是在表示层。

表示层变化太快了,以至于多高深的理论也总是在这里碰钉子。反倒是缺乏“技术含量”的入门技术不断地在现实领域获得成功。VB、PB、Delphi、ASP(包括ASP.NET)、PHP、JavaScript、Flash,正是这些不够OOP的东西,这些不需要奢谈“模式”的东西,总在刺激着理论家的神经。或许这一块,本就是人民群众充分发挥想像力和创造性的领域,正如一切高深的社会经济理论,在现实世界的发展面前总是那么苍白无力。

表示层的工作还是太大了,循规蹈矩的好学生Swing,总是搞不赢WinForm这类时常开点小差的差生,更是远远不如他的前辈VB、PB这些小流氓。而高傲的Java Web层,凝聚了各种“模式”的精华,还是难以承受ASP、PHP这类无法无天的混混之冲击。毕竟在表示层,计划不如变化快,什么继承、封装、重用,在现实中其实并不重要。因为很快就地震了,一切都要重盖了。说实在的,这个领域,只要少出点Bug,多设计不如少设计,因为后者来得更快,而且更容易找人来做。

这个结论可能很多要引起公愤了。不过别急,大家回头想一想,以前大家做这行的时候,不是流行说35岁就Game Over了吗?可坚持到这把岁数的老同志其实现在很值钱。他们在做什么?在做服务端、在做底层、在做设计。这些高级的活儿,不干够年岁,不见多识广是做不了的。
即使是做表示层的,那是在做研究(如dlee),而非拖拉控件这种事情。

至此,笔者斗胆做一结论:表示层要成功,拼的是易用性。类似的功能条件下,谁简单谁赢。
分享到:
评论
5 楼 knight 2007-07-06  
LZ说的不错,支持一下!
4 楼 lordhong 2007-07-06  
不错的分析, +U!
3 楼 myy 2007-07-02  
楼主的论点的确“非主流”,呵呵,不过我很欣赏,支持一下!很多说到了我的心坎里(我以前用过很长时间的C++/Delphi)。
2 楼 lgx522 2007-07-02  
有了基本的思路,那该如何做?思路如下:

1、用纯JSP调服务层。主要是考虑JSP的广大群众基础。如果有条件的团队可以用velocity、freemarker,这样可以像ASP、PHP那样改起来查看快。
2、用Swing或swt调服务层导出的远程接口。像Spring的远程调用,方便之极,不过是在服务层的xml中写点东西,copy一下改一改很快。Hessian、Burlap和RMI都很快。缺点在于都要装JRE,对机器要求高一点,老掉牙的机器有点难跑。此方案适用于对客户端要求高的企业内部应用。
3、用Ajax,就像dlee这阵子提的Java REST,我是不会啦。感觉还是比较复杂,不太适合人民群众。
4、等JavaFX...
5、等Java界下一个即简单又规范的Web Framework...
6、发动VB、Delphi、PB高手,解决调用Java服务的问题(只是千万不要用Web Service,又复杂又慢),这其实是一个最疯狂最厉害的方法。如果真能解决,以VB、Delphi、PB的高用户群、超强群众基础、快速而低配置要求,配之以强大稳定的Java服务端,服务端与客户端都得到充分的利用,必定能打造最强企业应用。而各位老鸟也可专心做高级的服务端,新手乐之于低级的客户端,各得其所。这事情其实最理想,只是难做:1、各大产商是以新而复杂的技术为生存基础的,这种对客户有利的方案势必被其打击和歪曲;2、国内的高人们其实都是唯洋大师马首是瞻,生怕脱离潮流影响生计。

以上第6条,高人们大可以当我是疯子傻瓜,无所谓。有心有志的同道们可与我联系,大家一起尝试一下。

此帖如果不对此处高人们的胃口,还请各位手下留情,一不要删,二不要置新手帖。至少尊重一下两三个小时的劳动。
1 楼 lgx522 2007-07-02  
Java的表示至今为何不成功,根本原因在于大师及牛人们沿袭了一贯的高技术路线,一个个拼思想、拼设计、拼架构,最后苦了开发者。
这个事有前史可供借鉴:当初大家最终发现实际工作中基本上用不上EJB,于是Johnson振臂一呼,来了个倒EJB运动,终于甩了一大包袱,让Java在服务器端来了个大胜利。不是说EJB一无是处,而是大家基本上用不着。

以前ASP、PHP、JSP争霸的时候,很多同道其实是选了JSP,为了一点高技术含量的满足感和高薪水的诱惑。后来才发觉JSP用起来复杂多了,于是很多同道就不断制造Framework,以图用规范化解决复杂性,可惜事以愿违。现在回过头来看,Java Framework在数据层的成功(Hibernate),在服务层及全构架的成功(Spring),实际上是突破了所谓的“J2EE规范”,极力简化的结果。而Web Framework的不成功,则是在重蹈经典J2EE的“规范化”不归路。

以前史为鉴,我们所需要的,应当是简单的表示层。换言之,至少不能比JSP更复杂。现在大家都已经养成了好习惯,数据层和服务层的代码都放到应在的位置了。说句不中听的,只要数据层和服务层质量高,表示层乱一点没关系,重要的是足够Easy。看着不顺眼没关系,重写一个就行,费不了多少工夫。当年VB、PB、Delphi就是这么干的,他们不过是败在业务逻辑和表示在纠缠在一起,难改,一动百摇。

相关推荐

    jsp编程技巧 创建表示层之类

    在JavaServer Pages(JSP)开发中,创建表示层类是一种常见的实践,它有助于将业务逻辑与视图层分离,提高代码的可维护性和可重用性。本章节将深入探讨如何有效地利用JSP创建表示层类,并分享一些实用的编程技巧。 ...

    Java Web表示层技术.xmind

    思维导图的模式展示给你,java web技术,简单易懂,大牛总结 ,更多资源到我BLOG free get

    Java Web表示层技术 思维导图.png

    Java Web表示层技术 思维导图.png

    java实现多层嵌套循环参数转换

    在实际项目中,文件`InterfaceAuthManageServiceImpl.java`可能包含了服务层的接口授权管理实现,它可能会使用到上述的多层嵌套循环、参数转换以及数据库操作。而`model_manage_response_group_config.sql`可能是...

    java三层架构处理

    所谓“三层架构”,一般是指将应用程序分为表示层(UI层)、业务逻辑层(BLL层)和数据访问层(DAL层)。这样的分层设计能够使各个层次各司其职,降低各层间的耦合度,便于后期维护与升级。 #### 一、概述 根据...

    java三层结构

    Java三层架构通过将应用程序划分为表示层、业务逻辑层和数据访问层,不仅提高了代码的复用性和可维护性,还增强了系统的灵活性和可扩展性。对于大型或复杂的系统而言,三层架构是一个非常实用的选择。通过合理的设计...

    01 Java代码是怎么运行的?1

    1. **平台无关性**:Java虚拟机提供了一层抽象,使得Java程序可以不依赖于特定的硬件平台,降低了软件移植的成本。 2. **安全**:JVM对字节码进行了验证,确保其不会执行恶意代码,增强了系统的安全性。 3. **动态...

    JAVA_API1.6文档(中文)

    java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务...

    JAVA三层架构购物网站

    Hibernate允许开发者用JAVA对象来表示数据库中的表,通过对象的CRUD(创建、读取、更新、删除)操作实现对数据库的操作,降低了数据库操作的复杂性。 在学习三层架构的购物网站时,特别需要注意以下几点: 1. 模块...

    JAVA生成树Service层代码

    ### JAVA生成树Service层代码详解 #### 背景与目的 在开发具有层次结构的数据展示功能时,例如产品分类、组织架构等场景,我们常常需要构建一个可视化的树形结构来直观展示这些数据。本篇文章将深入探讨如何在Java...

    java三层结构开发,很好的利用了MVC结构,尤其是对持久层的理解运用很有帮助与参考价值

    业务逻辑层的职责是确保应用程序的业务规则得到正确执行,同时保持与表示层和数据层的解耦。 3. 持久层(Model/DAO):持久层主要负责数据的存储和检索,它与数据库进行交互。在Java中,持久层通常使用ORM(Object-...

    图书信息管理系统(基于文件系统,3层架构,java实现)

    1. 表示层(Presentation Layer):这是用户与系统交互的界面,负责处理用户的输入,展示系统的反馈结果。在本系统中,可能包含Web页面或者桌面应用程序,提供友好的图形用户界面,使得图书馆工作人员可以方便地进行...

    基于Java的建材运营管理系统源码.zip

    【标签】"java 软件/插件" 指出该资源与Java编程语言相关,同时可能是某种软件或插件的形式存在。在Java领域,软件通常指的是Web应用程序,而插件可能是用于扩展系统功能的组件。 【压缩包子文件的文件名称列表】...

    JAVA MVC三层架构 代码生成器.JAVA根据数据库表反向工程生成 MVC三层架构 代码的生成器

    Java MVC三层架构是一种广泛应用于开发Web应用程序的设计模式,它将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个主要部分。这种架构旨在提高代码的可维护性、可扩展性和模块化。 1. **模型...

    J2EE-Web表示层技术详解

    在Java企业版(J2EE,现称为Java EE)中,Web表示层是用户与应用程序交互的界面,它负责将后端数据以直观、友好的形式展现给用户。本篇文章将深入探讨J2EE Web表示层的核心技术,尤其是JavaServer Pages(JSP)和...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    你还java三层结构开发,很好的利用了MVC结构,尤其是对持久层的理解运用很有帮助与参考价值

    Java三层架构和MVC设计模式在IT开发领域中是两种非常重要的软件开发方式,它们主要用于构建可维护性高、结构清晰的应用系统。 首先,我们来理解Java三层架构。这一架构通常包括表现层(Presentation Layer)、业务...

    java版是男人就下100层

    - **Floor类**:表示每一层楼,包括楼层号、怪物、陷阱、物品等信息。 - **Monster类**:用于定义怪物,有生命值、攻击力等属性,并包含攻击方法。 - **Item类**:表示可拾取的物品,如药水、装备等,可以增加...

    Javatree java树结构

    - 完全二叉树(Complete Binary Tree):除了最后一层外,所有层都被完全填充,且最后一层的节点尽可能地靠左排列。 - 满二叉树(Full Binary Tree):每个节点要么有两个子节点,要么没有子节点,即没有只有一个...

    JAVA中的多层继承

    类的继承格式、继承的关系表示图、访问限制、子类对象的实例化过程、方法的覆写、属性的覆盖、Super关键字、this与super的区别

Global site tag (gtag.js) - Google Analytics