java

java

Java回归Mac_OpenJDK代替JDK

  前段时间笔者获悉苹果似乎不准备在下一代Mac OS系统中集成Java开发环境JDK了,而起主要原因是乔布斯觉得针对Mac系列的JDK发布速度缓慢,总是落后于其它平台。很显然,地对于这种似乎是被轻视的感觉苹果是无法忍受的,不过对于目前开发语言的现状来说,Java似乎是不可或缺的一部分,因为全球有数以万计的Java用户和开发者在使用Mac,那么如何才能找到一个有效的折中点呢?答案就是OpenJDK   我们在上个月曾报道过,Apple下一个版本的OS X将不再使用它所移植过来的Java版本,这些Java版本也不再成为OS X的组成部分了。根据MacRumours站点所述,一个热心开发者向斯蒂夫乔布斯发了一封邮件,询问Apple Mac OS X对Java编程语言与平台的未来规划。乔布斯回应到: Sun(现在是Oracle)在所有平台上都提供了Java。他们有自己的发布计划,但他们的计划与我们自己的总是有很大差别,因此我们所发布的Java总是落后他们一步。这么做可不太好。 现在Apple宣布他们将与Oracle合作在OS X上通过OpenJDK项目实现Java SE 7版本。新闻如是说: Apple将会贡献Mac OS X上的Java SE 7实现所需的大多数关键组件、工具与技术,包括32位与64位基于HotSpot的Java虚拟机、类库、网络栈以及新的图形客户端基石。凭借 OpenJDK,众多的开源开发者可以使用Apple的Java技术,这样他们就可以贡献自己的一份力了。   Apple还确认Mac […]

Hibernate, java

Hibernate优化_Hibernate性能优化_Hibernate优化方案(下)

  Hibernate是笔者使用了超过5年的优秀ORM框架,虽然说使用了5年,但笔者并没有把握说自己真正意义上的精通Hibernate。说道熟悉Hibernate还差不多,因为Hibernate用法和特性只要使用过或许都很简单,但是要做到发挥Hibernate最大限度的潜力,Hibernate优化,或者说Hibernate性能优化笔者仅仅是初窥门径而已。这里摘录一篇牛人对于Hibernate优化的文章,希望对自己以后的使用指引下方向吧。这篇是上一篇的续作,着实是不错,推荐hibernate用户,尤其是像我一样的用户看看,会有收获的 4.6 HQL调优 4.6.1 索引调优 HQL看起来和SQL很相似。从HQL的WHERE子句中通常可以猜到相应的SQL WHERE子句。WHERE子句中的字段决定了数据库将选择的索引。 大多数Hibernate开发者所常犯的一个错误是无论何时,当需要新WHERE子句的时候都会创建一个新的索引。因为索引会带来额外的数据更新开销,所以应该争取创建少量索引来覆盖尽可能多的查询。 4.1节让你使用一个集合来处理所有可能的数据搜索条件。如果这不太实际,那么你可以使用后端剖析工具来创建一个针对应用程序涉及的所有 SQL的集合。基于那些搜索条件的分类,你最终会得到一个小的索引集。与此同时,还可以尝试向WHERE子句中添加额外的谓语来匹配其他WHERE子句。 范例7 有两个UI搜索器和一个后端守护进程搜索器来搜索名为iso_deals的表。第一个UI搜索器在unexpectedFlag、dealStatus、tradeDate和isold属性上有谓语。 第二个UI搜索器基于用户键入的过滤器,其中包括的内容除tradeDate和isold以外还有其他属性。开始时所有这些过滤器属性都是可选的。 后端搜索器基于isold、participantCode和transactionType属性。 经过进一步业务分析,发现第二个UI搜索器实际是基于一些隐式的unexpectedFlag和dealStatus值来选择数据的。我们还让tradeDate成为过滤器的必要属性(为了使用数据库索引,每个搜索过滤器都应该有必要属性)。 鉴于这一点,我们依次使用unexpectedFlag、dealStatus、tradeDate和isold构造了一个复合索引。两个UI搜索 器都能共用它。(顺序很重要,如果你的谓语以不同的顺序指定这些属性或在它们前罗列了其他属性,数据库就不会选择该复合索引。) 后端搜索器和UI搜索器区别太大,因此我们不得不为它构造另一个复合索引,依次使用isold、participantCode和transactionType。 4.6.2绑定参数 vs.字符串拼接

Hibernate, java

Hibernate优化_Hibernate性能优化_Hibernate优化方案(上)

  Hibernate是笔者使用了超过5年的优秀ORM框架,虽然说使用了5年,但笔者并没有把握说自己真正意义上的精通Hibernate。说道熟悉Hibernate还差不多,因为Hibernate用法和特性只要使用过或许都很简单,但是要做到发挥Hibernate最大限度的潜力,Hibernate优化,或者说Hibernate性能优化笔者仅仅是初窥门径而已。这里摘录一篇牛人对于Hibernate优化的文章,希望对自己以后的使用指引下方向吧。 1. Hibernate优化-引言 Hibernate是最流行的对象关系映射(ORM)引擎之一,它提供了数据持久化和查询服务。 在你的项目中引入Hibernate并让它跑起来是很容易的。但是,要让它跑得好却是需要很多时间和经验的。 通过我们的使用Hibernate 3.3.1和Oracle 9i的能源项目中的一些例子,本文涵盖了很多Hibernate调优技术。其中还提供了一些掌握Hibernate调优技术所必需的数据库知识。 我们假设读者对Hibernate有一个基本的了解。如果一个调优方法在Hibernate 参考文档(下文简称HRD)或其他调优文章中有详细描述,我们仅提供一个对该文档的引用并从不同角度对其做简单说明。我们关注于那些行之有效,但又缺乏文档的调优方法。 2. Hibernate优化-Hibernate性能调优 调优是一个迭代的、持续进行的过程,涉及软件开发生命周期(SDLC)的所有阶段。在一个典型的使用Hibernate进行持久化的Java EE应用程序中,调优会涉及以下几个方面: 业务规则调优 设计调优 Hibernate调优 Java GC调优 应用程序容器调优

java

《Maven实战》作者专访_学习Maven另一本好书

  maven作为一款优秀的Java项目构建工具在Java开源界十分流行。估计很少有开发的朋友不知道maven的吧。笔者使用maven时间也已经超过3年的时间,期间经历了maven 1.x,maven 2.x。目前已经升级到了最新的maven 3.0,因为其对maven 2.x良好的兼容性因此让笔者可以轻松移植现有的全部项目。maven不但流行度很高其历史也十分悠久,很多耳熟能详的开源项目都是基于Maven来构建的。Maven 3刚推出不久,InfoQ有幸采访到国内唯一的Sonotype(Maven背后的公司)员工许晓斌先生,请他谈谈关于Maven 3以及他即将出版的新书《Maven实战》(该书很快就会在infoq上推出mini版本,有兴趣的朋友可以下载来看看,infoq上的mini book质量可都还是蛮不错的呦,一起期待这本maven的好书吧。) 1. 首先,请您介绍你自己,从什么时候开始你从事Maven的推广工作,以及你现在在做些有什么有趣的事情呢? 我从07年开始接触Maven,慢慢学习并在实际项目中推广使用,然后慢慢喜欢上了这个技术。1年之后我开始编写Maven中文博客并翻译《Maven权威指南》,并且维护了一个Google Group,我想这些事情对于Maven在国内的推广起到了一定的作用。也正是由于这些工作的关系,我有机会熟悉Maven的方方面面,并加入了Sonatype —— Maven之父Jason Van Zyl创建的公司。 目前我主要做两方面的工作,其一是维护Maven中央库和Sonatype OSS仓库托管服务,该服务为开源项目提供免费的Maven仓库并帮助他们同步自己的构件至中央仓库。目前有超过600个项目在使用该服务,包括知名的JUnit、TestNG、Ehcache等等。除此之外我也参与Nexus的开发,开源的、商业的都有。 2. Maven

java

DynamicReports 1.5.0下载_DynamicReports下载_DynamicReports 1.5.0

  DynamicReports 1.5.0下载地址发布了,关注DynamicReports的朋友可以直接去DynamicReports官方获取最新的DynamicReports 1.5.0下载地址下载试用。DynamicReports是一款基于JasperReports的报表产品,说道JasperReports不用用户都是想起与之配套的另一个优秀的报表设计工具iReport。没错基于JasperReports和iReport的确可以设计出很多复杂优秀的报表。那么DynamicReports为何还会被研发出来,难道又是重复发明轮子?   其实DynamicReports的作者的目标很简单,直接通过JasperReports进行报表开发的确灵活,单无论从开发的工作量还是复杂度上都是在难以接受,对于现代软件工业来说,生产力绝对是一个过硬的KPI指标,而对于开发人员来说,使用iReport又不见得符合他们的口味,毕竟大多数开发人员还是认为代码才是解决问题的最佳方案,由此我们可以看出,开发者需要的是快速通过代码来完成报表功能。由此我们今天说的DynamicReports也就诞生了。DynamicReports可以在不借助可视化报表工具的情况下快速开发出一系列复杂的报表,同时可以可以轻松的将报表打印以及导出成PDF,Excel,Word等多种格式。   DynamicReports最大的特点就是简单,因为使用和学习DynamicReports都十分容易,这让DynamicReports在用户中普及使用变成可能,同时对于它的学习成本将变得更为低廉也就更容易让开发者接受。   DynamicReports的另一大特点就是灵活,DynamicReports可以全部通过Java代码完成(貌似很符合程序员的口味),因为完全使用Java因此DynamicReports具有OO编程的重要特征–继承。也就是说一个报表可以完全继承一个已有报表的全部功能。而由Java代码控制报表的另一而优势就是报表的不再依赖模板,因此也就由静态报表转变为动态报表了。当然这并不是说DynamicReports完全只能由Java代码来控制,DynamicReports支持Java代码和jasper jrxml模板混合使用,这让报表展示的灵活性大大提高。   本次发布的DynamicReports 1.5.0主要是增加了对jrxml模板设计的支持,同时增加了一些新的例子方便用户学习使用。 DynamicReports 1.5.0下载地址: DynamicReports 1.5.0下载

java

OpenFaces 3.0下载_OpenFaces下载_OpenFaces 3.0

  OpenFaces 3.0下载地址发布了,关注OpenFaces的朋友可以直接去官方获取最新的OpenFaces 3.0下载地址下载试用。本次发布的OpenFaces 3.0主要是为了兼容已经日趋成熟稳定的JSF 2.0规范。对于使用JSF 2.0的用户来说,OpenFaces 3.0将带来OpenFaces 2.0的全部特性,同时提供更多OpenFaces 3.0独有的功能并且在使用上更为简洁方便。不过官方同时表示,为了顾及那些没有办法迁移到JSF 2.0的用户,OpenFaces 2.x系列的研发将与OpenFaces 3.x同时进行,并且在OpenFaces 3.x中包含的特性将同步包含在OpenFaces 2.x中,至于哪个更先发布这个顾及就要看官方的重视程度了,不过既然官方表示支持JSF 1.2用户,那么在短时间内估计老用户也不用如此担心升级问题了。 OpenFaces 3.0下载地址: OpenFaces 3.0下载 OpenFaces

java

Ujorm 1.0下载_Ujorm下载_Ujorm 1.0

  Ujorm 1.0下载地址发布了,关注Ujorm的朋友可以直接去官方获取最新的Ujorm 1.0下载地址下载试用。Ujorm的前一个版本还是Ujorm 0.94是今年5月份发布的,时隔半年的时间当我们再次迎来Ujorm更新的时候,其版本好吗居然直接跃升到了Ujorm 1.0可见其变化之大。与很多框架作者一样,Ujorm的作者并不是想以Ujorm来对抗目前最主流的ORM框架如Hibernate和iBatis等。Ujorm出现的唯一目标就是符合一些对性能要求苛刻同时又想尽可能简化ORM框架配置依赖的人群,正所谓没有最好的框架,只有最适合的框架就是这个道理。   简单说说Ujorm,Ujorm是一个新的开源Java版 ORM框架,Ujorm的作者目标是开发一个足够敏捷的ORM框架作为Java应用的持久层,以适合快速迭代开发的敏捷团队。Ujorm的第一个优势是性能上的优势,从一个简单的SELECT来时,Ujorm的性能要远远高于同类框架。当然Ujorm还包括有:类型安全的查询参数,更小的性能开销,和最简化的实体解决方案。从上述描述可以看出Ujorm作者是一个对性能十分看重的人,这点很类似连接池新秀BoneCP的作者,或许正是因为这些不断追求极致的开发者存在才让技术无时无刻不在前进吧!感叹到此为止,我们来看看Ujorm 1.0的变化。 Ujorm 1.0主要改进包括: Ujorm 1.0完成了Ujorm用户手册(对于开源软件来说,丰富的文档绝对是必须的,估计很少有人敢用一个文档匮乏的开源产品,除非那个产品时他自己开发的) Ujorm 1.0改进了大量的Java Doc文档 Ujorm 1.0新增了高效的批量延迟加载方法(OrmTools.loadLazyValuesAsBatch()) Ujorm 1.0改进了与Spring框架的整合,目前完美支持使用Spring管理ORM会话和事物 Ujorm

java

Commons Daemon 1.0.4下载_Commons Daemon下载_Commons Daemon 1.0.4

  Commons Daemon 1.0.4下载地址发布了,对需要讲Java应用打包成window服务有兴趣的朋友可以直接去官方获取最新的Commons Daemon 1.0.4下载地址下载试用。说起Java web应用,笔者接触过的绝大部分的生产环境都是Linux,而最常见的就是将应用程序服务器设置成让操作系统启动时自动启动。这个简单的功能在Linux和Unix下相对来说都十分容易完成。只需要设置好启动脚本,并加入到操作系统启动服务中即可,以Ubuntu为例,只要一个简单的命令:update-rd.d就可以轻松地将Jetty作为一个服务一样在操作系统启动的时候启动,在操作系统关闭之前将应用关闭。相对于Linux的简单而言,在window环境中就没那么容易了,那么如果在window下我们也需要类似的功能,将一个Java应用打包成一个服务该如何做呢?Commons Daemon就为我们提供了这样一个选择。   Commons Daemon是apache旗下Commons组件库的一个组件,是一套专门用于将Java应用打包成操作系统服务的类库。Commons Daemon的实现包括两部分组成,一部分由C语言编写,主要用于调用操作系统接口,另一部分由Java语言编写,主要用于实现守护进程的功能(实现服务需要调用的各种功能,比如关闭应用,启动应用等)。实际上Commons Daemon并不仅仅支持window平台,在Linux和Unix平台下依然可以用,只是笔者在Linux平台下比较喜欢以脚本的方式启动应用。而对应的win32平台下Commons Daemon采用procrun作为服务的实现,而Linux平台下则使用了jsvc. 还有一点值得说明的就是Commons Daemon的Java部分源码实际上来自Tomcat 4.0项目中的org.apache.commons.daemon包。因此Commons Daemon也就自然的成为了Tomcat默认的服务打包工具。   说到这里笔者想起了自己最喜欢也是最常用的一环Java应用程序服务器Jetty,Jetty使用的是另一款服务打包工具名字叫做:Java Service Wrapper,不过该款工具貌似是收费工具,当然也有社区版的下载不过功能上似乎有不少的限制有兴趣的朋友也可以参考下看看,毕竟多试试看没什么坏处! Commons

java

Luke 1.0.1下载_Luke 1.0.1_Lucene索引查看工具

  Luke 1.0.1下载地址发布了,关注这款Lucene索引查看工具的朋友可以直接去Luke官方获取最新的Luke 1.0.1下载地址下载试用。说到Lucene估计做Java的朋友都略有耳闻吧。在Java开源世界中作为全文索引的顶级存在相比大部分开发人员或多或少都接触过。目前流行的大部分全文检索工具也都是基于Lucene开发的。   想要使用Lucene那就离不开索引,简单的说就是让Lucene将海量数据以索引的方式存储起来,索引不但数据里相对海量数据要小的多,同时对索引的检索是极其高效的,在通过索引定位到需要的数据后再跳转到真实数据。而Luke则是针对Lucene的索引文件而设计的工具。借助Luke用户可以轻松的查看Lucene索引文件里的内容同时可以直接更改值。这对开发人员十分有帮助可以一目了然的查看到Lucene索引文件中都包含了哪些内容,这些内容是否正确。 Luke 1.0.1主要特性包括: Luke 1.0.1支持通过词元和文档编号浏览文档 Luke 1.0.1支持查看文件,并将文件复制到剪贴板中 Luke 1.0.1通过排名检索出常用的词元 Luke 1.0.1支持手动查询并返回对应的结果集 Luke 1.0.1支持对结果集的分析功能 Luke 1.0.1支持按条件删除索引文件 Luke 1.0.1支持对原始数据的重新索引,同时可以直接修改并更新现有的索引文件

java

Java陷阱_Java平台的陷阱_Java协议中的陷阱

  得多年前曾经见过一篇文章评价Java陷阱的,当时并没有太过于在意其内容。以为多半讲解的就是Java实现上的一些问题。随着Sun被Oracle收购之后,一系列的变动施加在原Sun的各种产品上让几乎所有的Sun的遗产都有所变更。其中最明显的就是各种协议和许可的改变。我们虽然没有精力去研究每个协议的具体条款,但作为一个擅长于赢利的公司来说为了赚钱而改动自己的产品是无容置疑的。今天再次看到一篇关于Java陷阱的评论,阅读之后的确发人深省啊,真是不知道那杯热气腾腾的Java咖啡还是以前的味道吗?   作为Apache软件基金会的成员之一,我对开源软件的立场倾向于支持更加自由的许可协议,例如Apache许可证 (v2.0), BSD, 或 MIT许可协议。我坚信应该鼓励企业都能够采用开源软件,让他们能够使用开源软件做他们想做的任何事情,在当前法律框架下尽可能的放宽限制。 宽松自由的软件许可协议能够使软件开发社区做的更好。自由的开源软件开发能鼓励真正的、专心的、有实力的参与者的奉献活动,就像“公开核心” 运动那样,企业可以出售对软件的服务和“企业级软件功能”,而不要变成一个单一个体掌握了所有软件的重要权利。   我必须坦诚——我对Java语言并不是很热心——我更愿意用Python,Javascript,C,C++,甚至是PHP写程序,可是我发现Java无所不在,我深陷其中。Java和JVM如今已经成为我的团队开发的Cloudkick里众多组件的核心部分,而且无可替换。   如今IBM宣布了要转移他们的工作重心,转向基于OpenJDK上开发。这是Oracle控告Google的Android侵权之后的又一件大事。Oracle是一个擅长于玩弄大公司政治的公司,擅长于榨取价值——我确信他会从Sun的躯壳里榨取出最后一枚硬币为止。   当Sun,现在是Oracle,把OpenJDK置于GPL许可协议之下时,TCK的许可协议的问题已经悬着5年多了。有些博客对这个问题有深入的介绍[1] [2] [3],我建议大家对TCK,Apache和Sun之间的故事都应该详细了解一下——但这不是我要在这里关注的。   我认为自己是个开源软件的倡导者,尽管跟有些人,例如Richard Stallman——GNU的创始人,的做法不尽相同。Richard的观点跟我在很多问题上都不太一致,但有一点是一致的,Java世界里越来越乱的现象也开始使我对软件平台和许可协议的信仰有所改变。   6年以前,Richard发表了“自由但带着枷锁 – Java陷阱”。当时我并不认同这种道德上的关于软件自由的论点,但现在我相信了,Java平台就是一个陷阱。   Richard在他的文章里谈到了“免费软件世界”以及其它很多的GNU项目,其中一点我觉得十分的重要:如果你的程序依赖于一个平台,你就会受到这个平台的许可协议和发展进程的约束。 任何软件,任何语言都会碰到这种问题。例如,如果一个免费的程序只能运行微软的Windows操作系统上,那对于免费世界

Scroll to Top