OSC 第 89 期高手问答 —— 轻量级 Java Web 框架

叶秀兰 发布于 2015/09/01 07:34
阅读 19K+
收藏 75

OSCHINA 本期高手问答( 9月1日- 9月6日) 我们请来了 @黄勇 为大家解答关于 轻量级 Java Web 框架方面的问题。

@黄勇 ,从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的 B/S 架构开发经验与项目实战经验,擅长敏捷开发模式。国内开源软件推动者之一,Smart Framework 开源框架创始人。热爱技术交流,乐于分享自己的工作经验。著有《架构探险——从零开始写Java Web框架》一书。

在 Web 开发方面,Java 经历了这么几个阶段,从最开始使用大量 Servlet 来处理各种业务逻辑,然后出现了著名的 Struts 框架,大大简化了 Web 应用的开发以及配置,而后是 Hibernate 和 Spring 的出现,使这三者成为三驾马车,并一直流行到现在。

由于 SSH 在不断发展的同时,体积也变得越来越庞大,很多人在使用的过程中被各种配置、注解弄得头昏脑涨。@黄勇的新书内容包含了设计一个框架所用到的各种技术,还涉及了很多底层的 Java 技术,如类加载器、依赖注入、线程本地、事务管理和安全控制等等。

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《架构探险——从零开始写Java Web框架》一书。

黄勇的处女作 + 红薯的处女序:http://www.oschina.net/doc/18366 

购买链接:http://www.amazon.cn/

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Java Web 框架如何变得轻量级 方面问题向 @黄勇 提问,请直接回帖提问。

加载中
1
博文视点
博文视点
OSC第89期高手问答——轻量级 Java Web 框架(公布中奖名单)


@西夏一品堂 @Carvendy @lxbzmy @javagoboy @Dreampie        


恭喜以上五位网友或获得《架构探险——从零开始写Java Web框架》图书一本 


请私信 @博文视点   告知快递信息(格式:姓名+电话+地址+邮编号码)! 
Dreampie
Dreampie
非常感谢
4
郭志强
@黄勇 :黄老师,你好,我想问下如今轻量级java web框架很多,实现方式大有不同,该如何选择?怎么才能更好的理解学习java web原理,提升自己?
黄勇
黄勇
适合自己实际需求的才是最好选择,建议先从 servlet 规范开始了解 java web 原理,然后再动手实践。
3
西夏一品堂
西夏一品堂
@黄勇 :现在的mvc架构中,经常看到的dao,service(只针对CRUD)都会写一个接口,然后一个实现类。
然后就只有一个实现类,像这些CRUD,基本不可能有多个实现。请问,这些是不是没有必要写一个接口
开源中国首席装B官
开源中国首席装B官
看了这么多评论,很受用
luokery
luokery
回复 @小杨阿哥哥 : 我也这么认为的.
春眠不觉晓
春眠不觉晓
首先,我也很讨厌写那么多的接口,再加上一个Impl的实现类. 不过,最近在看"JUnit实战"一书. 突然发觉, 先创建一个接口, 是为了方便测试. 特别是那种测试先行的编程, 契约很重要. @黄勇
Y
Y292450104
回复 @code_cj : 这个要看需求的,如果是按照规范来,从需求分析,到设计编码的规范来的话,接口优先订出来还是有必要的。如果前期的设计没有做到这么详细,这样的接口则没什么必要
丛林迷雾
丛林迷雾
看情况是否需要接口啊,MVC框架中接口也不是必须的,MVC是分层,分层接口并不是必须的
下一页
2
贾珣
贾珣
@黄勇 :您好,想请问一下关于Wiki系统(以词条为核心模型)的设计模型与思路。PHP的开源Wiki系统相对Java较多,但总体上由于对PHP性能和数据库性能的担忧,总是在词条过多之后越来越慢,当然大部分是我对系统的运维和把握的问题哈。不过还是想了解一下Wiki系统的设计和普通的内容管理系统的不同,分类和标签对于Wiki系统设计相对困难,有没有什么好一些的设计及概念抽象思路可以参考借鉴。谢谢。
贾珣
贾珣
回复 @黄勇 : 万分感谢~
黄勇
黄勇
回复 @贾珣 : 我觉得是这样。
贾珣
贾珣
回复 @黄勇 : 那么还是要使用无限分类来持久化并处理分类和标签的设计对吗?谢谢~
黄勇
黄勇
个人建议可以借用 redis 来帮助你管理分类和标签,当然这些数据还是需要持久化到 db 中的,redis 只是为你提供一个缓存,让应用的性能更高。
2
小城渔翁
小城渔翁
@黄勇 :MVC也有这么多年了,就没程序猿跳出去搞点新的东西出来,所有就要有框架?
泥沙砖瓦浆木匠
泥沙砖瓦浆木匠
回复 @水牛叔叔 : 说的很对!
黄勇
黄勇
回复 @水牛叔叔 : 说得很对!
水牛叔叔
水牛叔叔
不用框架也可以,用servlet(java),然而用久了,你自己的各种积累也越来越像个框架了,最终发现自己也写了一个框架出来了
2
西夏一品堂
西夏一品堂
@黄勇 :现在的java web一般都是mvc架构,dao,service,controller太笨重了。请问,如何精简,使得更好的轻量级,扩展性
黄勇
黄勇
通过 js 来调用
西二三旗
西二三旗
其实你也可以不这么写,java是一门工程语言,在大型软件开发方便项目的管理,这样写的话模块之类的好划分,每一种语言都有自己的长处,每一种语言都有权衡。
西夏一品堂
西夏一品堂
让前端来调用。是直接用js调用吗?还是在controller里面调用?
黄勇
黄勇
其实我个人觉得没有必要按照 dao-service-controller 这样的架构来搭建框架,实际上能够做到前后端解耦,最好能前后端完全分离,这样会更好,比如后端发布 rest 服务,让前端来调用。
2
踩瓜大盗
踩瓜大盗
@黄勇 :Java 8 发布之后,新增的特性对现代web框架有没有什么影响呢?
黄勇
黄勇
java8 貌似可以通过反射获取参数名称了,这样可以稍微简化一些配置,此外 lambda 表达式也会使 java 语法变得更加简单。
2
JFinal
JFinal
@黄勇 : 一早过来回复这么多了,@黄勇 大牛逻辑清晰、述事严谨、乐于分享,博客内容更是言简意赅,深入浅出,繁琐的事情讲得极度清晰透彻是极其少有的开源先锋,顶一个 
Jieven
Jieven
回复 @黄勇 : 黄总 情商最高(没有之一)
JFinal
JFinal
回复 @黄勇 : 各种框架都各自有核心设计目标,各有优缺点,没有最好,只有最适合。技术、框架都是一个不断发展进化的过程,未来 10 年后的框架肯定与今天的大不相同
黄勇
黄勇
多谢詹总的认可!我觉得 JFinal 才是最好的 Java Web 轻量级框架(没有之一)。
1
有色白水
@黄勇 :我一直认为写一个框架是理解框架最好的方式和办法,想问下黄勇老师,在写框架的过程中,我发现,经常犯的错误是,经常把代码写成函数,耦合度过高,抽象过少的时候,逻辑容易复杂,抽象过多的时候,性能下降太多,扩展不易实现等问题,可以请教下您写框架的经验吗?
黄勇
黄勇
我认为首先站在用户的角度考虑这个框架应该怎么用?然后针对这个用例来设计系统架构,分离出各个组件,并定义组件之间的接口,最后就是实现各个接口了。这个过程需要一定的抽象能力,还需要参考一些经典的设计模式,需要灵活使用。
西二三旗
西二三旗
无他,但手熟尔
1
天山的影子
天山的影子
@黄勇 :您好,请问您设计框架处理数据库里一张表的cud操作的思路?
黄勇
黄勇
一般情况下,我会将单表操作做成面向对象的方式,通过一个简单的 api 就能实现 crud 操作,底层需要根据 entity 以及参数动态生成 sql 语句,详细的过程可以参考 smart 框架。
返回顶部
顶部