Skip to content

Latest commit

 

History

History
1388 lines (883 loc) · 62.2 KB

J2EE学习之路.md

File metadata and controls

1388 lines (883 loc) · 62.2 KB

J2EE学习之路 Awesome

Java Commons

Java tutorial

WebService

常用第三方webservice

IDE

Eclipse

Eclipse GUI Plugin

Eclipse根据java代码生成UML图

Apache IvyDE

Apache IvyDE is the Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse™.

Tomcat

Javassist

jclasslib

Hudson

用Java编写的持续集成(CI)工具。

Jenkins

用Java编写的一个开源持续集成工具。项目是在和Oracle发生争执后的来自于Hudson 的分支。

Atlassian Bamboo

持续集成和交付工具,它将自动化构建、测试和发布捆绑到单个流程中。

TeamCity

来自于JetBrains的一个基于Java构建的管理和持续集成服务器。

JUnit

DbUnit

JMockit

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.

Log4j

Logback

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

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中添加依赖

    <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

Maven and M2Eclipse

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/

Gradle

一个开源的自动化构建系统,建立在Apache Ant和Maven Apache概念的基础上,并引入了基于Groovy的特定领域语言(DSL),而不是使用Apache Maven宣布的项目配置XML形式。

Ant

Ivy

Apache Ant项目的一个子项目,一个可传递的依赖项管理器。

Eclipse Color Themes

MyEclipse

EclEmma

EclEmma is a free Java code coverage tool for Eclipse.

eCobertura

Eclipse Plugin for Cobertura. Java code coverage integrated into the IDE.

JavaNCSS

JavaNCSS - A Source Measurement Suite for Java

Clover(收费)

CAP (code analysis plugin)

CAP (code analysis plugin) is an eclipse plugin (written in Java) that analysis your java project. It checks dependencies between the classes and packages and gives you a hint about the architecture, reusability and maintainability. ("JDepend 2")

Visual Performance Analyzer

VisualVM

JD(Java Decompiler)

注:不支持命令行使用,因而很难批量编译。

jad

注:jad支持命令行方式使用,最新版本为1.5.8g,支持的class版本过低。经常出现问题:The class file version is 48.0 (only 45.3, 46.0 and 47.0 are supported)。还有一个工具uuDeJava,也是基于jad,所以估计也难以避免这个问题。

jdec

JODE

JODE is a java package containing a decompiler and an optimizer (aka obfuscator ;-) for java.

DJ Java Decompiler

注:收费软件,没有试用过

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.

FindBugs

PMD

PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, PLSQL, Apache Velocity, XML, XSL. Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Ruby, Scala, Objective C, Matlab, Python, Go.

Metric

Jdepend

JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.

SourceHelper

The “Source Helper” plugin is an Eclipse plugin that takes a very useful feature that exists in Intellij IDEA and puts it into Eclipse. In short, the feature shows the code of an out-of-visible-range starting bracket by floating a window that shows the code you cannot see. This helps immensely when trying to identify what closing bracket belongs to what part of the code.

Structure101

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

inFusion

Whether you own, are responsible for, or are acquiring software projects in C/C++ or Java, inFusion puts you in full control of architecture and design quality. inFusion makes quality assurance of multi-million LOC systems not merely practical, but effective, successfully handling both object oriented and procedural style code.

SourceMonitor

Simian

Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it.

CheckStyle

Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard.

CCT

代码规模统计工具CCT是根据华为公司的项目特点而开发的软件规模统计工具;它既可以统计指定版本的非空非注释行,也可以通过比较当前版本和基础版本,计算新增修改规模得到增强项目的规模。CCT通过辨认不同的扩展名支持对多种语言的规模统计,包括C,C++,JAVA,DELPHI,汇编(ASM),SQL,JSP,ASP,HTML和TXT等文件。

EJ-Technologies一家(收费)

FORTIFY SCA(收费)

coverity(收费)

klocwork(收费)

GProf

Dot and Graphviz

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

sikuli

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.

cpDetector

EZMorph

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

Apache Shiro

SSH相关

Struts

Spring

Hibernate

iBATIS/MyBatis

appfuse

TopLink

json

neethi

JDOM

Dom4j

XML Pull Parsing

Apache Santuario(xmlsec)

SAXON

The XSLT and XQuery Processor

jsoup

HTML Parser

Java port of Mozilla charset detector(jchardet)

JMX

jsch

OpenLDAP

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

Protobuf

zip4j

Xtext

antlr

ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It's widely used to build languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees.

JavaCC

Java Compiler Compiler tm (JavaCC tm) is the most popular parser generator for use with Java tm applications. A parser generator is a tool that reads a grammar specification and converts it to a Java program that can recognize matches to the grammar. In addition to the parser generator itself, JavaCC provides other standard capabilities related to parser generation such as tree building (via a tool called JJTree included with JavaCC), actions, debugging, etc.

sablecc

cglib

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

JACOB

Apache POI - the Java API for Microsoft Documents

iText(AGPL)

aspose

MVEL(Drools)

OGNL(Struts)

SPEL(Spring)

  • See Spring

JSP EL

freemarker

Velocity

Aurora

文件类型检测

数据库连接池

Eclipse插件开发

大数据相关

Hadoop

Spark

Storm

http://storm.apache.org/index.html https://storm.apache.org/javadoc/apidocs/index.html

nutch

ZooKeeper

Lucene

Apache Flume

Solr

Commons DbUtils: JDBC Utility Component

curator

Sqoop

Avro

Chukwa

Thirft

CAS

Prometheus

grafana

collectd

influxdata