金色的骷髅 发表于 2015-1-18 11:02:29

了解下JAVA的用 Java 天生 Java:CodeModel 先容

由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,
在我们编写代码的时分,经常会有如许的情况:一部分代码是能够依据另外一部分代码依照某种特定的形式变更而来的;偶然,跟着那一部分被依附的代码产生变更,依附的代码不能不随着修正;偶然,如许的代码会跟着项目标促进,不止一次的呈现。很典范的一个例子就是,当必要本人完成数据会见层时,一般每一个实体类会对应一个DAO(数据会见对象)类,并且一样平常来说DAO类的代码编写是很机器的。这时候,我们就必要利用“代码天生”来进步我们的开辟效力和进步代码的可保护性。
Java有良多种办法能够完成“代码天生”,好比,间接利用打印语句大概利用模板引擎。但比拟较而言,利用CodeModel会使代码更天真也更简单保护。CodeModel的官网除Javadoc没有供应很好的进修文档,以是我们在项目中利用时也是不休地探索。因而,本文既是一篇CodeModel的先容文章,也是我们对CodeModel利用的履历总结。本文将依照一样平常的进修编程言语的思绪并分离示例代码向读者伴侣们先容CodelModel的利用办法。但愿能对读者伴侣们有所帮助。
CodeModel简介
CodeModel是用于天生Java代码的Java库,它供应了一种经由过程Java程序来天生Java程序的办法。
CodeModel项目是JAXB的子项目。JAXB(JavaArchitectureforXMLBinding)是一项能够依据XMLSchema发生Java类的手艺,它供应了将XML实例文档反向天生Java对象树的办法,并能将Java对象树的内容从头写到XML实例文档。JAXB是JDK的构成部分。JAXBRI(ReferenceImplementation)即schemacompiler能够将XML的schema文件映照为响应的Java元素。
CodeModel的利用办法
假如往浏览JCodeModel的API文档,JCodeModel类是我们第一个要往打仗的。JCodeModel类是天生Java代码的根。一般我们依照自上而下的按次天生所必要的Java代码。好比起首创立一个类JDefinedClass,然后再经由过程类天生办法、办法体和办法体内的代码……顺次而下。
一个CodeModel的典范使用以下:
清单1.CodeModel的典范使用

JCodeModel

cm=newJCodeModel();
//经由过程构建cm树来天生Java代码
cm._class(...);
...
//自上而下地天生类、办法等
cm.build(newFile("."));在CodeModel中除JCodeModel类,几个经常使用的类有JDefinedClass、JMethod、JBlock、JFieldVar、JVar、JType、JExpr等。
JDefinedClass类是CodeModel来界说类的,它供应了类本身的创立、承继、完成,和类成员变量、成员办法的创立办法等
JMethod类是Java的办法类,它能够创立办法体,那末就有了JBlock类
JBlock类是我们常常要用到的类,它供应了十分多的办法:部分变量的声明、变量赋值、天生各类把持语句、挪用其他办法、设置办法的前往值等
JFieldVar类用来界说类的成员变量,它能够对成员变量举行声明、赋值等
JVar类用来界说变量,供应了变量的基础操纵如声明、赋值、初始化等
JType类用来界说Java中的各类数据范例
JExpr类表达式的工场类,它供应了TRUE和FALSE两个常量值,和天生表达式的各类办法和表达式的赋值等
为了便利前面的代码演示,如今这里构建好cm树和dc类,CodeModel会在以后项目标src文件夹->dw包下天生名为example的Java类。
清单2.构建cm树和dc类

FiledestDir=newFile((newFile("src"));
JCodeModelcm=newJCodeModel();//实例化CodeModel
JDefinedClassdc=cm._class("dw.example");//创立example类变量声明与赋值
变量范例
Java的变量范例包含基础数据范例和援用数据范例。
JCodeModel类中界说了几个常量来映照Java的基础数据范例。
JCodeModel的成员常量BOOLEAN、BYTE、CHAR、SHORT、INT、LONG、FLOAT和DOUBLE涵盖了Java所有的基础数据范例(boolean、byte、char、short、int、long、float、double),和NULL、VOID等。能够经由过程cm直接失掉。
关于援用范例,能够经由过程JCodeModel类的parseType办法来失掉。在parseType办法的参数中指定要援用的范例,经由过程范例名来猎取对象。
清单3.猎取援用变量范例

JTypetype=cm.parseType

("String");
JTypetype1=cm.parseType("myType");以后即可以利用type、type1来界说变量的范例。
当地变量和成员变量
Java的变量能够分为当地变量(同样成为部分变量)和成员变量(同样成为实例变量)。
关于当地变量,可使用JBlock类中的decl办法对当地变量举行界说和初始化。当地变量是JVar范例。JBlock类供应了三个重载的decl办法,分离是:
decl(intmods,JTypetype,Stringname,JExpressioninit)
decl(JTypetype,Stringname)
decl(JTypetype,Stringname,JExpressioninit)
<p>
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。

冷月葬花魂 发表于 2015-1-19 18:52:11

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

飘飘悠悠 发表于 2015-1-24 15:23:32

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

只想知道 发表于 2015-1-26 17:17:30

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

蒙在股里 发表于 2015-2-4 17:11:00

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

分手快乐 发表于 2015-2-10 04:30:01

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

小魔女 发表于 2015-2-28 19:46:52

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

若天明 发表于 2015-3-10 07:32:33

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

精灵巫婆 发表于 2015-3-17 05:10:10

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

柔情似水 发表于 2015-3-23 21:15:25

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
页: [1]
查看完整版本: 了解下JAVA的用 Java 天生 Java:CodeModel 先容