`

进击的Java开发

 
阅读更多
今天在公司的邮件组中看到一组很有趣的讨论,这是我最喜欢目前公司的一个地方,经常有人主动把自己最新看到的有趣的东西分享出来。今天这组的话题是现代Java开发,Java无疑在企业级应用开发领域仍然独占鳌头。而Java的世界也在不断前进中。

开发工具:最好的Java IDE肯定是JetBrains的IntelliJ IDEA,没有之一。 有米的同学直接上Personal License,没米的弄个社区版,也可以凑活着用。相信我,一旦你用了这个IDE,你就离不开它了。

构建工具:Ant和Maven的时代已经过去,Gradle(http://www.gradle.org/)已经是目前的标准了,其极其强大,易用,灵活,表现力强。当然不得不提的是,如果没有Maven的依赖管理系统,其基本也废。从Maven, Ant切换到Gradle都很方便。我的同事写过一篇文章:http://dreamhead.blogbus.com/logs/227427912.html 推荐它,我的另外一个同事还分享过一篇关于Gradle的具体应用的文章:(http://www.infoq.com/cn/articles/Gradle-application-in-large-Java-projects)。

部署工具:Cargo(http://cargo.codehaus.org/Quick+start):开发Web应用时,打包,部署到服务器上一气呵成。和Gradle结合使用,效果更佳。本来build pipeline里就应该有部署一说的。

写代码时,可以考虑使用的类库,这些类库会极大的减少你的代码量并且能够增强你的代码表现力:

* Guava(https://code.google.com/p/guava-libraries/):Google的工程师为大家写的通用库,里面有关于collections,caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等,基本上,我个人已经把Collections的所有函数都转换到使用Guava的函数了,从此腰不疼,腿也不抽筋了。因此,把Guava看做JDK的一部分应该都不为过。

* Joda-Time(http://joda-time.sourceforge.net/):JDK中不管是Date,还是Calendar,其之难用,天理难容,需要使用Java时间函数的同学请使用这个类库里的时间。你会感谢我的。

* SLF4J + Logback(http://www.slf4j.org/): 日志二人组,Logback成功小三上位,以性能的优势挤掉log4j,成为和slf4j的第一搭档。

* Junit + Fest Assertion(https://github.com/alexruiz/fest-assert-2.x):单元测试二人组,同样的,Fest也是小三上位,以其更具表现力的API获得众多码农的青睐。其实,原配hamcrest也可以通过定制自己的Matcher达到同样的效果,只是程序员都挺懒的,是吧。

* make-it-easy(https://code.google.com/p/make-it-easy/): 写测试的时候,经常需要构建一些复杂的Object,尤其是一些继承结构复杂的对象,为每个对象写Builder会产生大量的重复代码,因此,Let's make it easy。

* Sonar(http://www.sonarqube.org/) + checkstyle(http://checkstyle.sourceforge.net/) + Findbugs(http://findbugs.sourceforge.net/): 代码质量检测3人组,最好是能够把多个项目组的sonar dashboard投到一面墙上,Shame on low code quality team!代码质量是程序员的自尊心啊。

* moco(https://github.com/dreamhead/moco):写测试时,遇到和外部项目的依赖时,还在一步一步的Mock吗?试试moco吧,分分钟给你一个你期望的服务器。

* Jbehave or Cucumber :自从《Specification by Example》大红之后,BDD开始走上潮流,Jbehave和Cucumber就是Java世界的BDD框架,JBehave属于Java世界的亲生孩子,功能强大,同时也相对复杂一点。Cucumber是在Ruby世界大红之后,移植到Java世界的。个人只用过JBehave,表示其不算复杂,就是类的继承关系有点太乱。
分享到:
评论
9 楼 江南白衣 2013-12-23  
ningandjin 写道

恩,白衣兄涉猎广泛,受教受教。


我也是从你这里看到 Fest Assertion的,以前看hamcrest不算很喜欢。
8 楼 aliahhqcheng 2013-12-22  
收藏 
7 楼 ningandjin 2013-12-20  
江南白衣 写道
fest已经残了,现在的小四是从fest test fork出来的assertj

https://github.com/joel-costigliola/assertj-core#why-have-we-forked-fest-assert

恩,白衣兄涉猎广泛,受教受教。
6 楼 江南白衣 2013-12-20  
fest已经残了,现在的小四是从fest test fork出来的assertj

https://github.com/joel-costigliola/assertj-core#why-have-we-forked-fest-assert
5 楼 JEfuye 2013-08-23  
学习勒   
4 楼 ningandjin 2013-08-16  
ThoughtWorks
jakejone 写道
楼主,哪家公司。。。

3 楼 jakejone 2013-08-14  
楼主,哪家公司。。。
2 楼 ywx217 2013-08-05  
支持作者!开眼界了~
1 楼 dreamhead 2013-07-15  
我特别喜欢你写Moco那段,哈哈!

对Fest,我一直持保留意见。make-it-easy我才知道,得想想。

相关推荐

    阿里巴巴Java开发手册(终极版).pdf

    阿里巴巴Java开发手册(终极版).pdf

    进击的Java 第16期

    ### 进击的Java 第16期:提升与探索 #### 概述 本期主题聚焦于Java编程语言的提升与探索,旨在通过一系列的技术文章、人物访谈和技术实践,帮助读者更好地理解和掌握Java及其周边生态。从Java语言本身的优势讨论到...

    java web项目开发需要掌握哪些技术.docx

    Java Web项目开发涉及众多技术,这些技术构成了一个完整的开发栈,使得开发者能够构建高效、可扩展的Web应用程序。以下是对标题和描述中提及的关键技术的详细说明: 1. **Java语言**: - **面向对象分析设计思想**...

    MQTTDemo(Java)

    **MQTT(Message Queuing ...通过分析和理解这个“MQTTDemo(Java)”项目,开发者不仅可以学习到MQTT协议的基本原理,还能掌握在Java环境中如何利用Paho库进行实际的MQTT通信,这对于进行物联网相关的开发工作大有裨益。

    BS结构项目实训__Java Web开发

    【BS结构项目实训__Java Web开发】 在信息技术领域,BS(Browser/Server)结构是一种广泛应用于Web应用开发的架构模式。这种模式下,用户通过浏览器(Browser)与服务器(Server)进行交互,大大降低了客户端的复杂...

    java开发中常用数据库JDBC连接写法.docx

    Java开发中的JDBC(Java Database Connectivity)是一种标准的API,允许Java程序与各种数据库进行交互。JDBC提供了统一的接口,使得开发者无需关心底层数据库的差异,只需编写相对通用的代码即可实现对不同数据库的...

    java web 前端开发技术调查问卷.docx

    Java Web前端开发技术在现代互联网应用中扮演着至关重要的角色,它负责用户与服务器之间的交互和界面展示。以下是对调查问卷中涉及的关键知识点的详细解释: 1. **HTML**: HyperText Markup Language 是网页的基础...

    Java Web开发(jsp)课程设计.docx

    Java Web开发,特别是Java Server Pages (JSP) 技术,是构建动态网站的关键工具之一。JSP允许开发者在HTML文档中嵌入Java代码,从而实现动态内容的生成。当Web服务器接收到JSP页面的请求时,它会先将JSP转换成...

    Java 基础核心总结.pdf

    它的设计目标是具有简单性、面向对象、健壮性、安全性、平台独立性等特性,这使得Java成为多平台应用开发的理想选择。Java的核心概念包括类(Class)、对象(Object)以及封装、继承和多态等面向对象特性。 Java的...

    JAVA发布Hprose服务的简单实例

    在Java开发中,有时我们需要将服务暴露给其他应用程序或客户端,这时可以借助远程过程调用(RPC)框架来实现。Hprose是一个轻量级、跨语言、跨平台的RPC框架,非常适合这样的需求。本教程将详细介绍如何使用Hprose在...

    基于Java平台swing+mysql实现图书管理系统总结报告.docx

    为了解决上述问题,本次项目选择使用Java平台结合Swing和MySQL数据库技术开发了一个新的图书管理系统。该系统具有以下特点: 1. **用户界面友好**:采用Swing框架进行前端设计,界面美观、操作简便。 2. **高效的...

    java版本的设计模式的实现demo

    设计模式是软件开发中的经典实践,它们为解决特定问题提供了通用、可复用的解决方案。在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充...

    Thinking In Java 源码

    1. 学习设计模式:书中涵盖了多种设计模式,如单例模式、工厂模式、观察者模式等,这些模式在实际开发中广泛应用,源码能帮助我们直观地看到这些模式的实现。 2. 理解面向对象:Java是一种面向对象的语言,源码会...

    高等教育自学资料 天津理工大学 实验1 Java Web开发环境及Web编程基础.docx

    Java Web 开发环境及 Web 编程基础实验报告 本实验报告主要介绍了 Java Web 开发环境的搭建和基本的 Web 编程技术。实验目的包括安装配置 JDK/MyEclipse/Tomcat、搭建 Web 开发环境、发布简单 Web 程序、掌握 HTML ...

    javastudy.rar

    在Java开发领域,Spring框架是不可或缺的一部分,而SpringBoot作为其简化版,已经成为了快速构建微服务应用的首选。本压缩包"javastudy.rar"提供了丰富的学习资料,特别适合初学者或者希望深入理解SpringBoot的...

    Java项目 商城 (附源码和环境搭建下载连接)

    【Java商城项目开发详解】 Java商城项目是一种基于Java技术实现的电子商务系统,它涵盖了用户管理、商品展示、购物车、订单处理、支付接口等多种功能,是学习和实践Java Web开发的重要案例。本项目提供了完整的源码...

    JAVAjdk.zip

    这两个版本在Java开发历史上占据了重要的地位,各自具有独特的特性和改进。 首先,我们来看JDK 1.6,也被称为Java SE 6(Java Standard Edition 6)。这是Java的一个重要里程碑,发布于2006年。它引入了许多新特性...

Global site tag (gtag.js) - Google Analytics