14 minute read

Java学习之路 Awesome

Java SE

Java tutorial

Java EE

Spring

Hibernate

Struts(漏洞多,发展慢,后续使用Spring MVC)

模板引擎与表达式语言

WebService

常用第三方webservice

IDE

RxJava

Vert.x

UML

OSGI

Tomcat

AWT/Swing/SWT/Jface/JavaFX

IBM JDK

持续集成

DbUnit

JMockit

Fuzz

JUnit

TestNG

TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use.

ReportNG

ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. It is intended as a replacement for the default TestNG HTML report. The default report is comprehensive but is not so easy to understand at-a-glance. ReportNG provides a simple, colour-coded view of the test results.

SLF4J

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

Logback

Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off.

Log4j

Log4E

Log4E is an Eclipse Plugin which helps you to use your logger easily in Java Projects.The Plugin Log4E is not bound to any special logging framework. Thus you might be able to adapt to your own logger by defining your own templates using the preferences. It has active support for Log4j, Log4j 2, SLF4J, Commons Logging and JDK 1.4 logging.

代码评审

guava

jga

jga is a functors library: the intent is to explore and exploit functors as a design and implementation tool to reduce boilerplate coding. A functor is an object that encapsulates a function or expression: it can take arguments and produce results, as can any method, expression, or function (in other languages that support functions). Unlike an expression, as an object it can be passed as an argument without being executed; it can be persisted to a database or file; it can be serialized and passed from client to server (and back); and it can be instantiated at runtime based on information unavailable at compile-time.

Java Class Dependency Analyzer

OW2

OW2 is an independent, global, open-source software community. The mission of OW2 is to a) promote the development of open-source middleware, generic business applications, cloud computing platforms and b) foster a vibrant community and business ecosystem.

ForgeRock

apache

Apache Commons

Apache Commons is an Apache project focused on all aspects of reusable Java components.

sandbox中的项目无法直接通过maven进行依赖,必须通过svn下载源码,部署到本地maven仓库中。例如对于sandbox中的classscan项目:


    # 项目地址:<http://commons.apache.org/sandbox/commons-classscan/>
    svn checkout http://svn.apache.org/repos/asf/commons/sandbox/classscan classscan
    cd classscan

    # 当install带有parent的maven项目时,如果没有把parent一并install,其它项目引用时会出现
    # mvn install--Failed to read artifact descriptor for org.apache.maven.plugins:maven-source-plugin:jar:2.1.2
    cd parent (classscan/parent)
    mvn clean package install -DskipTests


    cd ../api (classscan/api)
    mvn clean package install -DskipTests

    cd ../bcel (classscan/bcel)
    mvn clean package install -DskipTests

在pom.xml中添加依赖

```xml
    <dependency>
        <groupId>org.apache.commons.classscan</groupId>
        <artifactId>bcel</artifactId>
        <version>0.2-SNAPSHOT</version>
    </dependency>
    <dependency>
            <groupId>org.apache.commons.classscan</groupId>
            <artifactId>api</artifactId>
            <version>0.2-SNAPSHOT</version>
    </dependency>

Eclipse中Update Project,选择Force Update of Snapshots/Releases

Apache HttpComponents

Maven

maven快速下载某个jar包依赖的所有jar

经常碰到这种事情:在一些非maven工程中(由于某种原因这种工程还是手工添加依赖的),需要用到某个新的类库(假设这个类库发布在maven库中),而这个类库又间接依赖很多其他类库,如果依赖路径非常复杂的话,一个个检查手动下载是很麻烦的事.下面给出一个便捷的办法,创建一个新目录里面建一个maven pom文件, 添加需要依赖的类库:

    <?xml version="1.0"?>
    <project xmlns="<http://maven.apache.org/POM/4.0.0>" xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>" xsi:schemaLocation="<http://maven.apache.org/POM/4.0.0> <http://maven.apache.org/xsd/maven-4.0.0.xsd>">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.dep.download</groupId>
        <artifactId>dep-download</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>com.xx.xxx</groupId>
                <artifactId>yy-yyy</artifactId>
                <version>x.y.z</version>
                <scope/>
            </dependency>
        </dependencies>
    </project>

在这个目录下运行命令,所有跟这个类库相关的直接和间接依赖的jar包都会下载到 ./target/dependency/下

`mvn -f download-dep-pom.xml dependency:copy-dependencies`

杂项

间接依赖的jar包能否直接使用

如果工程依赖A.jar,并用maven设置好依赖,同时A.jar会依赖B.jar,所以maven在下载A.jar的同时会下载B.jar,这时如果项目发现需要使用B.jar中的一些内容,在maven中不必从新设置依赖,可以在工程中直接使用。

把某个本地jar包安装到本地仓库中

mvn install:install-file -DgroupId=”edu.jiangxin” -DartifactId=”gcu” -Dversion=”1.0.0”

-Dpackaging=”jar” -Dfile=”D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar”

把某个本地jar包部署到某个远程仓库中

mvn deploy:deploy-file -DgroupId=”edu.jiangxin” -DartifactId=”gcu” -Dversion=”1.0.0”

-Dpackaging=”jar” -Dfile=”D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar” -Durl=http://yourlocalrepository:8888/archiva/repository/internal

-DrepositoryId=internal

bintray

https://bintray.com/

Ant

Clover(收费)

Java程序分析工具

反编译

ProGuard

ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or higher, or for Java Micro Edition.

Metric

Structure101

Structure101 is an agile architecture development environment (ADE) that lets the software development team organize a codebase.

EJ-Technologies一家(收费)

FORTIFY SCA(收费)

klocwork(收费)

Dot and Graphviz

Graphviz (Graph Visualization Software) 是一个由AT&T实验室启动的开源工具包。DOT是一种图形描述语言,非常简单的,Graphviz就是用来处理这种语言的工具。

Selenium

JBoss

The JBoss AS community project has been renamed to the WildFly community project, which has a new home at wildfly.org. The JBoss name now only applies to the commercially supported product, called JBoss EAP, which is derived from the WildFly community project and is available at <http://www.jboss.org/products/eap/overview/>.

GlassFish

GlassFish 是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。

Virgo

Virgo from EclipseRT is a completely module-based Java application server that is designed to run enterprise Java applications and Spring-powered applications with a high degree of flexibility and reliability. It offers a simple yet comprehensive platform to develop, deploy, and service enterprise Java applications.

Jetty

Jetty provides a Web server and javax.servlet container, plus support for SPDY, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations. These components are open source and available for commercial use and distribution.

字符编码

EZMorph

EZMorph is simple java library for transforming an Object to another Object.

Apache Shiro

iBATIS/MyBatis

appfuse

json

neethi

XML

SAXON

The XSLT and XQuery Processor

jsoup

HTML Parser

Java port of Mozilla charset detector(jchardet)

JMX

jsch

yFiles

The yFiles diagramming software components are extensive class libraries that enable you to add high-quality diagramming functionality to your own software applications

OpenLDAP

OpenLDAP Software is an open source implementation of the Lightweight Directory Access Protocol.

Protobuf

Archiver/Compressor

JFlex

JavaCC

sablecc

Xtext

antlr

JavaParser

Markdown转换

cglib

Javassist

jclasslib

iCal4j

分词

拼音

规则引擎

Drools

jBPM

OpenAS2

OpenAS2 is a java-based implementation of the EDIINT AS2 standard. It is intended to be used as a server. It is extremely configurable and supports a wide variety of signing and encryption algorithms.

Java Native Access (JNA)

mpiJava

eBus

Java操作Word/Excel/PowerPoint/PDF

Aurora

文件类型检测

Mina

数据库连接池

Commons DbUtils: JDBC Utility Component

ZooKeeper

Lucene

Solr

爬虫库

Apache Flume

Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.

curator

Sqoop

Avro

Chukwa

Thirft

CAS/SSO

Prometheus

grafanagrafana

collectd

influxdata

opengrok

Flex

JarScan

Updated:

Comments