论坛首页 Java企业应用论坛

javaWeb开发越来越复杂的情况下,如何尽力简化?

浏览 24606 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-30   最后修改:2009-05-30
    除了少数对javaWeb开发的复杂性乐在其中的高手外,javaWeb开发越来越复杂是大多数程序员的共识,但java是一个面向对象的语言,其特点就是能将复杂的部分包装在底层,给应用程序开发留出最简单实用的接口,因此,希望大家就程序编程接口能简化到什么程度进行讨论,将自己完成一项具体工作任务的代码贴出来进行比较,从而对希望简单编程的程序员一些启发。
  假设数据表usera有字段code(代码),name(姓名),org(所属机构),其中机构是编码字段,其表名为org,字段为code(机构代码), note(机构名称)。编写一个程序实现该表的增、删、改、查、统计、打印,机构字段用选择方式输入。
    大家会发现,该程序需要实现要求是大部分程序的共性,我们将其封装在底层,而其涉及的表、字段、编码表才是其个性,需要在程序中指定。因此我的最简程序为:

public class UserBean extends SimpleTableDsBean {
    DataStore dsMain; // DAO, 相当于PowerBuilder的DataStore
   
    // 为程序提供个性化参数
    public void onInit() throws Exception {
        dsMain = new DataStore("dsMain", "select code, name, org from useA", getConnItem());  // 初始化DAO对象, getConnItem()取得数据库连接
        dsMain.setColLabel("代码,姓名,机构");  // 设置列标题
        dsMain.setColCodeTable("org", "select code, name from org"); // 设置选择数据来源
        regDs(dsMain);  // 注册需要进行数据操作的DAO
    }
  
}
完了,
通过http://127.0.0.1/test/UserBean.class即可访问本程序,URL和程序的对应也是由底层专门的Servlet完成。程序的共用功能在SimpleTableDsBean中实现,数据访问功能在DataStore中实现。数据才屏幕上的显示格式缺省由程序底层实现,如需要自己指定,覆盖SimpleTableDsBean中相应的显示方法。
   发表时间:2009-05-30  
java的复杂性源于mvc架构,这是企业级应用必须的,入门的门槛确实高

你认为的最简程序在我却认为并不简单也不规范,每个人角度不同,目前的架构还是非常成熟的,毕竟是很多人智慧的结晶。
1 请登录后投票
   发表时间:2009-05-30  
易用性与功能的全面性是有冲突的。你想让框架能支持更多的东西就必然使它更庞大。简单的东西开发是快,但是功能肯定会少很多。而且在写复杂的应用的时候,看似复杂的框架反而会让人写更少的代码。而且一个相对全面的框架也能让各路专家汇集到一起,将注意力将在不同的关注点上对应用进行优化。太过简单的东西是做不到这点的,随着应用规模的加大,复杂度的提升,代码也会不停向意大利面条靠近……

但是有一点我认为是对的,如果大家没事来写非商业性的,有点娱乐性的应用或者工具的话还是用最简单的东西好,不要给自己找麻烦
0 请登录后投票
   发表时间:2009-05-31  
    框架的复杂化我觉得是必要的,但我觉得框架提供给开发者使用的API应尽量简单。例如JQuery做的事情很复杂,但使用起来却十分简单。现在的框架大部分没有将企业应用程序常用的功能整合到框架中,如数据表的通用查询、权限控制、通用统计、报表打印、用户身份认证、数据输入校验等,每一个初学者,在工作过程中,都要把这些共性的困难要解决一遍。从学习角度来讲,解决这些问题确实对技术水平的提高有帮助,但工作效率的低下就无法避免。我想在数据库应用方面的通用功能问题和大家讨论一下,一提到企业应用,大家就觉得“复杂、难”,但复杂在那些方面,能不能举些例子来大家讨论一下。
0 请登录后投票
   发表时间:2009-05-31  
我的观点可能比较偏激一点.
要简化web开发,有一种可选方式就是在前端直接生成SQL语句,然后把SQL直接扔到后台去执行就好了.
目前Web开发的复杂性,很大原因就在于一层一层的包装转换,信息被一次一次进行变换,如果能够省略信息的转换过程,在页面上直接能够操作访问后台数据库,很多问题都可以得到简化.
2 请登录后投票
   发表时间:2009-05-31  
如果用户数量有限的话怎么样都好。如果做公共网站,指望着PV能上来的话前端生成SQL是不行的。太过简单的框架也是不行的。事情的复杂度在压力大的时候都被放大了一个数量级。相比之下,如果用户群受限,我倒是觉得开发自由度挺大。
0 请登录后投票
   发表时间:2009-06-01  
    "前端直接生成SQL语句"会使前端程序复杂化,而且以目前大部分应用来看,前端程序过多,可能造成程序反映慢、内存泄漏、调试不方便等问题。因此,我的想法恰好相反,前端尽量简化,尽量减少JavaScript的使用量,而且将前端的对象全部包装为服务器端的Java对象,由服务器生成前端的Html和JavaScript,以实现和用户的交互。对界面比较复杂的情况,可将界面静态部分做成html文件,并在其中设置动态部分的标签,在使用时,将服务器端生成的动态部分插入标签位置。这样可保证程序员基本只与Java和SQL打交道即可,一是使需要掌握的知识面减窄,二是使主要代码集中在Java上,Java的强类型便于调试和排错,三是主要代码在服务器端,保证系统的安全性。
0 请登录后投票
   发表时间:2009-06-01  
coyizz 写道
    "前端直接生成SQL语句"会使前端程序复杂化,而且以目前大部分应用来看,前端程序过多,可能造成程序反映慢、内存泄漏、调试不方便等问题。因此,我的想法恰好相反,前端尽量简化,尽量减少JavaScript的使用量,而且将前端的对象全部包装为服务器端的Java对象,由服务器生成前端的Html和JavaScript,以实现和用户的交互。对界面比较复杂的情况,可将界面静态部分做成html文件,并在其中设置动态部分的标签,在使用时,将服务器端生成的动态部分插入标签位置。这样可保证程序员基本只与Java和SQL打交道即可,一是使需要掌握的知识面减窄,二是使主要代码集中在Java上,Java的强类型便于调试和排错,三是主要代码在服务器端,保证系统的安全性。

你说的不是jsp+serverlet么?
0 请登录后投票
   发表时间:2009-06-01  
Kao
jee开发能不能找个快捷的方式。
0 请登录后投票
   发表时间:2009-06-01  
打个比方.
现在的j2ee开发,就好象对面来了一个人.
最外面穿着一件风衣(HTML)
风衣里面穿着西装(Struts)
西装里面穿着马甲(Spring)
马甲里面穿着衬衫(Hibernate)
衬衫的里面才是真实的人(数据库)
全部衣服都是采用棉布做成的(Java)
每件衣服上都可能有其他配件(第3方库)
各件衣服之间需要配套使用(版本兼容)

如果你想看到这个人到底长啥样,必须得:先脱一件,再脱一件,再脱一件.最后才能看到最终数据库里面的数据是啥样子.

在很久很久以前,这个人是不穿衣服的.
你直接可以看到他(SQL语句)
现在不行了,你必须穿越层层衣服来看这个人.

每件衣服都是不同的厂家做出来的.而且随时在改变.
你必须自己把这些衣服一件一件套上去,祈祷他们大概能够合身.

每件衣服都可能有漏洞(bug),你得自己想办法打个补丁(patch)上去.


16 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics