java模板引擎生成代码 java模板引擎性能对比

Java 使用 freemarker 模板引擎的相关疑问 ,求大神走过路过不要错过FreeMarker 是一个用Java编写java模板引擎生成代码的模板引擎java模板引擎生成代码 , 主要用来生成HTML Web页面,特别是基于MVC模式java模板引擎生成代码的应用程序 。虽然FreeMarker具有一些编程的能力,但不像PHP,通常由Java程序准备要显示的数据,由 FreeMarker模板生成页面 。FreeMarker可以作为Web应用框架一个组件,但它与容器无关,在非Web应用程序环境也能工作的很好 。FreeMarker适合作为MVC的视图组件,还能在模板中使用JSP标记库 。
所以java模板引擎生成代码你其实是用freemarker的ftl 做前端页面来生成对应的html页面 。
ftl模板Map数据模型 = 输出html
然后web.xml其实就是ftl的模板,使用ftl的话,其实就是java xml利用freemarker的模板来生成HTML 。当然java模板引擎生成代码你生成的HTML是可以跟HTML做的前端一起有的 。
作为一个JAVA程序员, 应该掌握哪些知识, 目前, 比较流行的java开发框架有哪些,java基?。?三大主流数据库mysql,orcale,sql server;然后是j2ee的相关知识 , 也就是java开发框架 。
Spring Framework 【Java 开源JEE框架】
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架 。
Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯 。Spring的架构基础是基于使用JavaBean属性的
Inversion of
Control容器 。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的 。
Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误 。Spring的数据访问架构还集成了
Hibernate和其他O/R mapping解决方案 。Spring还提供了唯一的事务管理抽象 , 它能够在各种底层事务管理技术,例如JTA或者
JDBC事务提供一个一致的编程模型 。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务
--如果你需要--还能实现你自己的aspects 。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务 。
Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架 。【SpringIDE:Eclipse平台下一个辅助开发插件】.
WebWork 【Java开源Web开发框架】
WebWork是由OpenSymphony组织开发的 , 致力于组件化和代码重用的拉出式MVC模式J2EE
Web框架 。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard
Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目 。
Xwork简洁、灵活功能强大 , 它是一个标准的Command模式实现,并且完全从web层脱离出来 。
Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换 , 强大的表达式语言(OGNL – the
Object Graph Notation Language) , IoC(Inversion of Control倒置控制)容器等 。
WebWork2建立在Xwork之上,处理HTTP的响应和请求 。WebWork2使用ServletDispatcher将HTTP请求的变成
Action(业务层Action类),
session(会话)application(应用程序)范围的映射,request请求参数映射 。WebWork2支持多视图表示,视图部分可以使用
JSP, Velocity, FreeMarker,
JasperReports,XML等 。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.
【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
Struts 【Java开源Web开发框架】
Struts是一个基于Sun
J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的 。由于Struts能充分满足应用开发的需求,简单易用 , 敏捷迅速 , 在过去的一年中颇受关注 。Struts把Servlet、JSP、自定义标签和信息资源(message
resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式 , 极大的节省了时间,所以说Struts是一个非常不错的应用框架 。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】
Hibernate 【Java开源持久层框架】
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库 。
Hibernate可以应用在任何使用JDBC的场合 , 既可以在Java的客户端程序实用 , 也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任 。Eclipse平台下的Hibernate辅助开发工具:【Hibernate
Synchronizer】【MiddlegenIDE】
Quartz 【Java开源调度框架】
Quartz是OpenSymphony开源组织在Job
scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用 。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表 。Jobs可以做成标准的Java组件或
EJBs 。Quartz的最新版本为Quartz 1.5.0 。
Velocity 【Java开源模板引擎】
Velocity是一个基于java的模板引擎(template engine) 。它允许任何人仅仅简单的使用模板语言(template
language)来引用由java代码定义的对象 。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说 , 页面设计人员可以只关注页面的显示效果 , 而由java程序开发人员关注业务逻辑编码 。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案 。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用 。Velocity也可以为Turbine
web开发架构提供模板服务(template
service) 。Velocity Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发 。【VeloEclipse
:Velocity在Eclipse平台下的一个辅助开发插件】
IBATIS 【Java开源持久层框架】
使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM
而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句 , 而ibatis 则要求开发者编写具体的SQL
语句 。相对Hibernate等 “全自动”ORM机制而言,ibatis
以SQL开发的工作量和数据库移植性上的让步 , 为系统设计提供了更大的自由空间 。作为“全自动”ORM 实现的一种有益补充 , ibatis 的出现显
得别具意义 。
Compiere ERPCRM 【Java开源ERP与CRM系统】
Compiere
ERPCRM为全球范围内的中小型企业提供综合型解决方案 , 覆盖从客户管理、供应链到财务管理的全部领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性 。易于安装、易于实施、易于使用 。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了 。
Roller Weblogger 【Java开源Blog博客】
这个weblogging
设计得比较精巧,源代码是很好的学习资料 。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑 , TrackBack,提供页面模板,RSS
syndication,blogroll管理和提供一个XML-RPC 接口 。
Eclipse 【Java开源IDE】
Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数
—4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构 。
XPlanner 【Java开源项目管理】
XPlanner 一个基于Web的XP团队计划和跟踪工具 。XP独特的开发概念如iteration、user
stories等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题 。
XPlanner特点包括:简单的模型规划,虚拟笔记卡(Virtual note cards),iterations、user
stories与工作记录的追踪 , 未完成stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持 。
HSQLDB 【Java开源开源数据库】
HSQLDB(Hypersonic SQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据 。支持ANSI-92 标准
SQL语法 。而且他占的空间很小 。大约只有160K,拥有快速的数据库引擎 。
Liferay 【Java开源门户系统】
代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts
框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获?。褂?Apahce
Lucene实现全文检索功能 。
主要特点:
提供单一登陆接口,多认证模式(LDAP或 SQL);
管理员能通过用户界面轻松管理用户,组 , 角色;
用户能可以根据需要定制个性化的portal layout;
能够在主流的J2EE应用服务器上运行,如JBoss Jetty/Tomcat,JOnAS;
支 持主流的数据库,如PostgreSQL,MySQL;
使用了第三放的开源项目,如Hibernate, Lucene, Struts;
支持包括中文在内的多种语言;
采用最先进的技术 Java, EJB, JMS, SOAP, XML;
JetSpeed 【Java开源门户系统】
Jetspeed是一个开放源代码的企业信息门户(EIP)的实现, 使用的技术是Java和XML. 用户可以使用浏览器,
支持WAP协议的手机或者其它的设备访问Jetspeed架设的信息门户获取信息. Jetspeed扮演着信息集中器的角色,
它能够把信息集中起来并且很容易地提供给用户.
Jetspeed具有如下的特征:
即将成为标准化的Java Portlet API
基于模板的布局, 包括JSP和Velocity
通过开放的内容同步技术支持远程XML 内容交换
定制默认的主页
使用数据库进行用户认证
内存缓存技术, 加快页面的响应
通 过Rich Site Summary技术, 支持同步内容
和Cocoon, WebMacro, Velocity集成.
Wireless Markup Language (WML) 支持
使用XML格式的配置文件注册portlet.
完整的 Web Application Archive (WAR) 支持
Web应用程序开发的基础设施
可以在本地缓 存远程内容
与Avantgo同步
可移植到所有支持JDK1.2和Servlet 2.2的平台
与 Turbine模块和服务集成
可以根据用户, 安装媒体类型和语言的不同设定, 产生不同的个性化服务
持续化服 务使得所由的portlet能够容易的存储每个用户的状态, 页面和portlet
使用皮肤技术使得用户可以选择portlet的颜 色和显示属性
自定义功能是的管理员可以选择portlet以及定义个人页面的布局
在数据库中存储PSML
通 过Jetspeed的安全portlets管理用户, 组,角色和权限
基于角色对访问portlet进行控制
JOnAS 【Java开源应用服务器】
JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发 。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet
2.3和JSP 1.2规范 。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA
、JMS、JMX、JNDI、JAAS、JavaMail。
JFox3.0 【Java开源应用服务器】
JFox 是 Open Source Java EE Application Server,致力于提供轻量级的Java
EE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用的开发!
如果您正在寻找一个简单、轻量、高效、完善的Java EE开发平台,那么JFox正是您需要的 。
JFox 3.0 拥有以下特性:
重 新设计的 IoC 微内核 , 融入 OSGi 模块化思想
设计成嵌入式架构,能够和任何 Java Web Server集成部署
支 持 EJB3,JPA规范,支持容器内和容器外两种方式运行EJB和JPA组件
支持 EJB 发布成Web Service
采 用 JOTM()提供事务处理,支持两阶段提交 (2PC)
采用 XAPool() 提供 XA
DataSource,支持智能连接池管理
内置 MVC 框架,实现自动Form
Mapping,Validator,Uploading等功能,支持JSP/Velocity/Freemarker页面引擎,并支持直接在
Action中注入EJB
支持多应用模块部署 , 让中大型应用充分享受模块化开发带来的优势
提供 Manager 管理模块,可以查看和管理各种运行时参数
提供根据 JFox 特色重写的 Petstore 应用模块
EasyJWeb 【Java开源Web开发框架】
EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主要流行的开源Web框架(Struts、JSF、Tapestry
、Webwork),吸取了其优点及精华,利用Velocity作为模板页面引擎,是一个实现了页面及代码完全分离的MVC开发框架 。是一个能实现中小型
Web应用系统快速开发的简易Web框架 。
通过EasyJWeb
Tools提供的配套开发工具,可以实现基于EasyJWeb框架的Web应用快速开发,包括常用应用软件的代码自生成、数据库添删改查(CRUD)代码生成、自动页面模版生成、配置文件管理等 。
框架特点:
零配文件置支持 。以前我们每接触一个框架,开始总都要被
他的配置文件折腾一番 。EasyJWeb实现零配置支持,可以不写一句配置文件就在框架基础上构建你的运用 。(适合小型网站系统) 。
简 易的模板页面设计支持:放弃使用jsp,使用简单Velocity脚本语言作为页面模板 。
页面程序完全分离:实现显示页面与程序逻辑 的完全分离,克服了传统jsp页面难于维护的问题 。
基于页面组件的框架 。灵活的页面组件配置,可以直接通过配置文件设置字段级的事件 组件 。
快速开发支持:通过EasyJWeb
Tools,可以自动生成应用软件模板代码,定制并管理自己的J2EE代码模板 , 代码生成模板支持最流行的实用Java开发框架(如hibernate、
Spring等)实现快速开发 。
Tapestry 【Java开源Web开发框架】
Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的 , 交互的web应用 。一个组件就是任意一个带有
【java模板引擎生成代码 java模板引擎性能对比】jwcid属性的html标记 。其中jwc的意思是Java Web
Component 。Tapestry使得java代码与html完全分离 , 利用这个框架开发大型应用变得轻而易举 。并且开发的应用很容易维护和升级 。
Tapestry支持本地化,其错误报告也很详细 。Tapestry主要利用javabean和xml技术进行开发 。【Spindle:Tapestry
辅助开发Eclipse插件】.
FreeMarker 【Java开源模板引擎】
FreeMarker允许Java
servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的 。模板用servlet提供的数据动态地生成
HTML 。模板语言是强大的直观的 , 编译器速度快 , 输出接近静态HTML页面的速度 。
【FreeMarker Eclipse Plugin与FreeMarker IDE:Eclipse平台下的辅助开发工具】
Lucene 【Java开源搜索引擎】
Apache
Lucene是一个基于Java全文搜索引擎 , 利用它可以轻易地为Java软件加入全文搜寻功能 。Lucene的最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤 , 分析文件,编排和使用索引的API , 它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能 。
iText 【Java开源PDF类库】
iText是一个能够快速产生PDF文件的java类库 。iText的java类对于那些要产生包含文本 , 表格 , 图形的只读文档是很有用的 。它的类库尤其与java
Servlet有很好的给合 。使用iText与PDF能够使你正确的控制Servlet的输出 。
Groovy 【Java开源动态语言】
Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和 Smalltalk的许多强大的特性 。
Groovy已在WebWork2中的应用 。它可以被编译为标准的Java Bytecode 。
OpenCms 【Java开源CMS系统】
OpenCms是一个J2EE的产品 , 它是用 Java写成的 。它和Tomcat捆绑在一起 。但是也能够使用ATG
Dynamo、WebLogic和WebSphere 。OpenCms支持多种RDBMS来保存内容,包括Oracle、SQL
Server、Sybase和mySQL 。新版本提供了一个新的模板引擎,JSP支持,一种新的连接管理系统,提高了稳定性 。
JUnit 【Java开源测试工具】
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing
framework) 。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能 。Junit是一套框架,继承TestCase类 , 就可以用Junit进行自动测试了 。
BlueJ 【Java开源IDE】
BlueJ是一个专门为入门级教学设计的JavaTM 开发环境 。它是由澳大利亚墨尔本Monash大学BlueJ小组设计并开发的 。
XWiki 【Java开源Wiki系统】
XWiki是一个强大的Java开源的Wiki引擎 。它支持一些受欢迎的特性如:
内 容管理(浏览/编辑/预览/保存),
支持附件,
版本控制,
全文本搜索,
权 限管理
使用Hibernate进行数据存储,
RSS输出与显示外部的RSS feeds ,
多 语言支持 ,
提供XML/RPC的API,
WYSIWYG HTML编辑器,
导出为PDF
Groovy 脚本支持等等.... 。
EJBCA 【Java开源网络服务器端组件】
EJBCA是一个全功能的CA系统软件,它基于J2EE技术,并提供了一个强大的、高性能并基于组件的CA 。EJBCA兼具灵活性和平台独立性,能够独立使用 , 也能和任何J2EE应用程序集成 。
JXTA 【Java开源其它项目】
Sun微系统公司公开了旨在建立P2P(Peer to
Peer)通用技术基础的JXTA计划 。JXTA技术是网络编程和计算的平台,用以解决现代分布计算尤其是点对点(P2P)计算中出现的问题 。
JXTA将建立核心的网络计算技术,提供支持在任何平台、任何地方以及任何时间实现P2P计算的一整套简单、小巧和灵活的机制 。JXTA首先将归纳目前
P2P的功能特别,而后建立核心的技术来表达目前的P2P计算的局限性 。其重点是创建基本的机制,而具体的策略选择权则交给应用的开发者 。JXTA将充分利用XML、Java等开放技术,使得UNIX操作系统更强大和灵活,比如利用管道(Pipes)传输Shell命令实现复杂的计算任务 。JXTA支持
P2P应用的基本功能来建立一个P2P系统,还将努力证实这些可以成为建立更高层功能的基础构造模块 。JXTA架构可以分为三个层面:JXTA核心层、
JXTA业务层和JXTA应用层 。
DWR 【Java开源AJAX框架】
DWR(Direct Web
Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).它的最新版本
DWR0.6添加许多特性如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring
bean),更好浏览器支持,还支持一个可选的commons-logging日记操作.
ZK 【Java开源AJAX框架】
ZK是一个Ajax Java Web框架,利用少量代码就能够开发出拥有Rich
UI的Web应用 。ZK提供基于XUL的标记语言和事件驱动的组件,可以让你像开发桌面应用程序一样简单 。支持EL表达式和脚本语言包括:JavaScript、Ruby和Groovy等 。支持Annotation及数据绑定 。集成Google
Maps、FCKeditor、DOJO以及Timeline 。
java代码生成器能生成c语言代码吗?用什么方法能实现呢?按照我的理解,可以的 , 代码生成器是跨平台,而且是跨语言的(至少是跨文本语言的,UML暂时不好说,) 。
代码生成器作为一种开发工具,一般不直接作为程序的一部分,通常也不直接或间接(如通过AOP)被程序调用 , 他是通过编程的方式生成所需要的代码,然后将生成的代码作为源文件,复制到开发工具的代码区,然后进行编译 。由于代码生成器是在编译之前运行的,因此它可以跨语言,你不但可以用代码生成器生成高级语言,也可以生成汇编语言,甚至机器码(0、1代码) 。
但编写代码生成器是一个难点,它需要你了解目标编程语言的语法 。如果别人已经把你需要的代码生成器写好了,你只需按要求使用即可,此时就不需要了解目标编程语言的语法 。
JNI是通过Java调用C语言(或其他语言 , 一般是C),它的实现机制与代码生成器不同(JNI是通过代码调用实现功能,而代码生成器是生成代码,复制代码进行使用),由于C是底层语言,一些底层操作单靠Java无法实现,所以才需要JNI 。
以上是我对代码生成器的个人理解 , 虽然提问时间已过了很久,但依然希望能对你及其他网友有所帮助 。
如何使用Freemarker生成java代码Freemarker是一个模板框架 。我们可以通过Freemarker进行代码生成或页面的静态生成 。现在简单的说一下怎样使用Freemarker Freemarker的主要生成类
public boolean generate(String templateFileName, Map data,
String fileName) {
try {
//取得模板的位置
String templateFileDir=templateFileName.substring(0, templateFileName.lastIndexOf("/"));
//取得模板的名字
String templateFile=templateFileName.substring(templateFileName.lastIndexOf("/"), templateFileName.length());
//取得生成文件的路径
String genFileDir=fileName.substring(0, fileName.lastIndexOf("/"));
Template template = ConfigurationHelper.getConfiguration(templateFileDir).getTemplate(templateFile);
File fileDir=new File(genFileDir);
org.apache.commons.io.FileUtils.forceMkdir(fileDir);
File output = new File(fileName);
if(output.exists()){
//如何代码已存在不重复生成
return false;
}
Writer writer = new FileWriter(output);
template.process(data, writer);
writer.close();
} catch (TemplateException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
代码中的Map 是模板所需要的数据,我们可以通过面向对像的方法把数据存在模板中public boolean genDaoInterface(String fileName){
DaoModel daoModel=new DaoModel();
//设置Dao实现类的包名
daoModel.setPackageName(DaoConstant.PACKAGE);
//取得接口名
String className=StringUtils.substringBefore(fileName,".");
//设置接口名
daoModel.setClassName(className);
MapString, Object data = https://www.04ip.com/post/new HashMapString, Object();
data.put("model", daoModel);
//设置生成的位置
String filePath=new String("src/" package2path(DaoConstant.PACKAGE) "/" fileName);
//代码生成
return super.generate(DaoConstant.INTERFACE_TEMPLATE, data, filePath);
}
data.put("model", daoModel);由这句代码可看出我们将可以在模板中直接调用这些数据package ${model.packageName};
public interface ${model.className} extends BaseHibernateDao {
}
关于java模板引擎生成代码和java模板引擎性能对比的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读