`
faiinlove
  • 浏览: 56263 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多

 

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.iteye.com/blog/517796

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

赶快去见见吧

【原文来自CSDN】

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics