Douyu会是SSH构架与JSP/Servlet技术的终结者吗?

 Douyu是一种完全采取Java语言开发的、运作于JVM以上的新式基础开发平台。
在web层,Douyu完全遗弃了JSP/Servlet,
在数据库访问层,Douyu不依赖于任何ORM(对像关系照射)构架(如Hibernate)。


Douyu将Java语言编译器、Http服务器、MVC圆满调整在一起,
差点儿兑现了ORM全自动化,同时在Java语言层面引出了权限治理模型。


Douyu内置的Java语言编译器基于OpenJDK Javac编译器(b60版),
并进行了批改和扩张,和Http服务器组合以后能在控制器层发挥出强大的威力,
你只要批改Java源文件,其后刷新浏览器就能查看运作结果,
与此同时编译器也是兑现ORM自动化的基石。

Douyu内置的Http服务器是基于NIO技术的,
是对Tomcat六及com.sun.net.httpserver(一共1300多个Java源文件)进展阔斧大刀的改建后得来的,
改建后的Http服务器当前唯有60个上下的源文件,支持Http1.0/1.1协议。

Douyu内置的权限治理模型现阶段包孕了效能权限、字段权限两类,
效能权限正常对应控制器类中的Action步骤,Action步骤可以与表单中的旋钮联系关系,
字段权限能统制表单中的字段是不是可以查看、批改或掩藏。

Douyu内置的ORM已差一点兑现自动化,你只须建个数据库表(如pet),
其后在服务器配置文件中配备数据库驱动、并为每个数据库指定一个包名(如my.oracle.table),
然后就你可以在你的Java源文件顶用import my.oracle.table.Pet导入模型种Pet。
Douyu还支持横跨多个数据库的事宜,还支持封存点(Savepoint)。

Douyu项目首页现阶段放在:
http://code.google.com/p/douyu/

底下是一些简略的代码片段:


Hello World

 

Java代码
1.@Controller
二.public class HelloWorld {
3. public void index(PrintWriter out) {
4. out.println("Hello World!");
5. }
6.}
@Controller
public class HelloWorld {
public void index(PrintWriter out) {
out.println("Hello World!");
}
}

 

自动提取表单参数:

 

Html代码
1.
2. 名称:
3. 年纪:
4. 
5.

 

名称:
年纪:

 

 


Java代码
1.@Controller
二.public class User {
3. public void show(String name, int age) {
4. ...
5. }
6.}
@Controller
public class User {
public void show(String name, int age) {
...
}
}


资料上传

 

Html代码
1.

2. 资料一:

三.说明 :

4. 
5.

 

资料一:

说明 :

 

 

 

Java代码
一.import com.douyu.http.UploadedFile;
2.
3.@Controller
四.public class FileUpload {
5. public void index(UploadedFile file一, String description) {
6. File f = new File("D:/Douyu/temp/uploadedFiles", file一.getSimpleName());
7. file一.saveTo(f);
8. }
9.}
import com.douyu.http.UploadedFile;

@Controller
public class FileUpload {
public void index(UploadedFile file一, String description) {
File f = new File("D:/Douyu/temp/uploadedFiles", file一.getSimpleName());
file一.saveTo(f);
}
}


根本的CRUD操作

 

Java代码
一.create table pet(
2. id int not null auto_increment,
3. name varchar(50) not null,
4. age int,
5. primary key(id)
6.);
create table pet(
id int not null auto_increment,
name varchar(50) not null,
age int,
primary key(id)
);

 

Java代码
一.import com.douyu.main.Context;
二.import sql.table.mysql.Pet;
3.
4.@Controller
五.public class Crud {
6. public void index(Context c) {
7. Pet pet = new Pet();
8. pet.name("pet一");
9. pet.age(三);
10. c.insert(pet);
11.
12. pet.name("MyPet");
13. c.update(pet);
14.
15. c.delete(pet);
16.
17. Rows rows = new Rows(Pet.class);
18. rows.offset = 一;
19. rows.limit = 100;
20. c.select(rows);
21. for(Pet p : rows.rowList) {
22. ...
23. }
24. }
25.}
import com.douyu.main.Context;
import sql.table.mysql.Pet;

@Controller
public class Crud {
public void index(Context c) {
Pet pet = new Pet();
pet.name("pet一");
pet.age(三);
c.insert(pet);

pet.name("MyPet");
c.update(pet);

c.delete(pet);

Rows rows = new Rows(Pet.class);
rows.offset = 一;
rows.limit = 100;
c.select(rows);
for(Pet p : rows.rowList) {
...
}
}
}

 

横跨多个数据库的事宜

 

Java代码
一.import com.douyu.main.Context;
二.import my.table.oracle.Table一;
三.import my.table.mysql.Table二;
4.
5.@Controller
六.public class Transaction {
7. public void index(Context c) {
8. Table一 t一 = new Table一();
9. t一.f一("1234");
10. Table二 t二 = new Table二();
11. t二.f二("1234");
12.
13. c.beginTransaction();
14.
15. c.insert(t一);
16. c.insert(t二);
17.
18. c.setSavepoint();
19.
20. t二.f二("abcd");
21. c.update(t二);
22.
23. c.endTransaction();
24. }
25.}
import com.douyu.main.Context;
import my.table.oracle.Table一;
import my.table.mysql.Table二;

@Controller
public class Transaction {
public void index(Context c) {
Table一 t一 = new Table一();
t一.f一("1234");
Table二 t二 = new Table二();
t二.f二("1234");

c.beginTransaction();

c.insert(t一);
c.insert(t二);

c.setSavepoint();

t二.f二("abcd");
c.update(t二);

c.endTransaction();
}
}

 

Douyu将施用两种开源协议:GPL2.0、 Apache License Version 2.0

全部与编译器相关的源代码应用GPL2.0协议(由于OpenJDK Javac编译器是施用这个协议的)
其余源代码施用Apache License Version 2.0协议开源。


不过现阶段Douyu的版本只是0.1.0,还不稳定,之所以只是提供了二进制版,
现阶段我也并不推荐你研究Douyu的源代码,由于这可能会铺张你的时间,
由于Douyu的内部兑现变故很频繁,在一年以内,大大很小版本变化次数已超过100次了,
源代码中的诠释也十分少,基本就来不急写,等过几个版本稳固先后再公布源代码。

当前Douyu的开发工作惟独我一个人,全凭个人兴趣在家全职开发,
如若你对Douyu的兑现有兴趣,念参加进去,我也是欢迎的,
但是你务必对Http协议、JDBC轨范、Java语言编译器有相当程度的理解,
要不然的话你可能在看Douyu的源代码时很吃力。


要想懂得更多内容请看:
Without SSH/JSP/Servlet,不走平常谈,Java可以更酷
http://zhh2009.javaeye.com/blog/517796

这篇稿子是昨夜在JavaEye刚刚公布的,详细说了然Douyu的更种用法,
里边也详细说了然Douyu的很多设计理念以及我个人的很多研究经验。

赶快去见见吧

 

我的异常网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值