Usergrid-stack의
구조와 사용컴포넌트 요약
1.hector
v1.1
a
high level client for cassandra
https://github.com/hector-client/
-
high level, simple object oriented interface to cassandra
-
failover behavior on the client side
-
connection pooling for improved performance and scalability
-
JMX counters for monitoring and management
-
configurable and extensible load balancing with three algorithms to
choose from: round robin (the default), least active, and a
phi-accrural style response time detector
-
complete encapsulation of the underlying Thrift API and structs
-
automatic retry of downed hosts
-
automatic discovery of additional hosts in the cluster
-
suspension of hosts for a short period of time after several timeouts
-
simple ORM layer that works
-
a type-safe approach to dealing with Apache Cassandra's data model
2.
common pool v1.5.3
Object
pooling 컴포넌트
이다.
-
A generic object pool interface that clients and implementors can use
to provide easily interchangable pooling implementations
-
A toolkit for creating modular object pools.
-
Several general purpose pool implementations.
http://commons.apache.org/proper/commons-pool/
3.
uuid v3.2.0
MAC
어드레스를
기반으로 uuid를
생성해주는 컴포넌트
http://johannburkard.de/software/uuid/
참고)
MAC 주소
확인 방법
Microsoft
Windows
ipconfig
/all
Solaris
arp
`uname -n`
Mac
OS X, Linux, BSD, other Unices
ifconfig
-a
HP-UX
/usr/sbin/lanscan
Solaris
11
dladm
show-phys -m
4.
Speed4j v0.9
시간을
측정할때 필요한 기능들을 포함하고 있다.
https://github.com/jalkanen/speed4j
5.
metrics v2.1.2
자바
모니터링 툴이다.
자바프로세스
내부에서 주요 메트릭스의 카운터를 수집하여 JMX,
STDOUT, HTML등으로
리포팅한다.
https://github.com/codahale/metrics
유사
경쟁 컴포넌트
-
Perf4J: Perf4J is a set of utilities for calculating and displaying
performance statistics for Java code. http://perf4j.codehaus.org/
-
ERMA: ERMA (Extremely Reusable Monitoring API) is an instrumentation
API that has been designed to be applicable for all monitoring needs.
http://erma.wikidot.com/
-
javasimon: Java Simon is a simple monitoring API that allows you to
follow and better understand your application. Monitors (familiarly
called Simons) are placed directly into your code and you can choose
whether you want to count something or measure time/duration.
https://code.google.com/p/javasimon/
-
Glassbox: The Glassbox troubleshooter is an automated troubleshooting
and monitoring agent for Java applications that diagnoses common
problems with one-click.
http://glassbox.sourceforge.net/glassbox/Home.html
-
InfraRED: InfraRED is a tool for monitoring performance of a Java EE
application and diagnosing performance problems. It collects metrics
about various aspects of an application's performance and makes it
available for quantitative analysis of the application.
http://infrared.sourceforge.net/versions/latest/
6.
cassandra v1.1.6
카산드라는
구글의 빅테이블 칼럼 기반의 데이터 모델과 페이스북으
Dynamo의
분산 모델을 기반으로 만들어져 페이스북에 의해
2008년
아파치 오픈소스에 공개된 분산 데이터베이스이다.
http://cassandra.apache.org/
7.
snappy 1.0.4
The
snappy-java is a Java port of the snappy
http://code.google.com/p/snappy/, a fast C++ compresser/decompresser
developed by Google.
http://xerial.org/snappy-java/
8.
ning-compress 0.8.4
Ning-compress
is a Java library for encoding and decoding data in LZF format,
written by Tatu Saloranta (tatu.saloranta@iki.fi)
Data
format and algorithm based on original LZF library by Marc A Lehmann.
See LZF Format for full description.
https://github.com/ning/compress
9.
concurrentlinkedhashmap v1.3
A
high performance version of java.util.LinkedHashMap for use as a
software cache.
https://code.google.com/p/concurrentlinkedhashmap/
10.
antlr v3.2
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.
(텍스트
파서 생성기)
http://www.antlr.org/
11.
avro v1.4.0
Apache
Avro™ is a data serialization system.
Avro
provides:
-
Rich data structures.
-
A compact, fast, binary data format.
-
A container file, to store persistent data.
-
Remote procedure call (RPC).
-
Simple integration with dynamic languages. Code generation is not
required to read or write data files nor to use or implement RPC
protocols. Code generation as an optional optimization, only worth
implementing for statically typed languages.
C,
C++, C#, Java, PHP, Python, and Ruby
http://avro.apache.org/
12.
jetty v6.1
Jetty
provides a Web server and javax.servlet container, plus support for
SPDY, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations
http://www.eclipse.org/jetty/
13
json simple v1.1
JSON.simple
is a simple Java toolkit for JSON. You can use JSON.simple to encode
or decode JSON text.
https://code.google.com/p/json-simple/
14
high-scale-lib v1.1.2
-
NonBlockingHashMap - Fast, concurrent, lock-free HashMap. Linear
scaling to 768 CPUs.
-
NonBlockingHashMapLong - Same as above, but using primitive 'long'
keys
-
NonBlockingHashSet - A Set version of NBHM
-
NonBlockingSetInt - A fast fully concurrent BitVector
-
Counter - A simple counter that scales linearly even when extremely
hot.
Most
simple counters are either unsynchronized (hence drop counts,
generally
really
badly beyond 2 cpus), or are normally lock'd (hence bottleneck in the
5-10
cpu range), or might use Atomic's (hence bottleneck in the 25-50 cpu
range).
https://github.com/stephenc/high-scale-lib
15.
snaptree v0.1
a
concurrent AVL tree with fast
cloning,
snapshots, and consistent iteration. It is described in
the
paper "A Practical Concurrent Binary Search Tree", by N.
Bronson,
J.
Casper, H. Chafi, and K. Olukotun, published in PPoPP'10.
https://github.com/nbronson/snaptree/
16.
httpclient
The
Apache HttpComponents™ project is responsible for creating and
maintaining a toolset of low level Java components focused on HTTP
and associated protocols.
http://hc.apache.org
17.
common logging v1.1.1
When
writing a library it is very useful to log information. However there
are many logging implementations out there, and a library cannot
impose the use of a particular one on the overall application that
the library is a part of.
http://commons.apache.org/proper/commons-logging/
18.
common collections v3.2.1
Commons-Collections
seek to build upon the JDK classes by providing new interfaces,
implementations and utilities. There are many features, including:
-
Bag interface for collections that have a number of copies of each
object
-
BidiMap interface for maps that can be looked up from value to key as
well and key to value
-
MapIterator interface to provide simple and quick iteration over maps
-
Transforming decorators that alter each object as it is added to the
collection
-
Composite collections that make multiple collections look like one
-
Ordered maps and sets that retain the order elements are added in,
including an LRU based map
-
Reference map that allows keys and/or values to be garbage collected
under close control
-
Many comparator implementations
-
Many iterator implementations
-
Adapter classes from array and enumerations to collections
-
Utilities to test or create typical set-theory properties of
collections such as union, intersection, and closure
http://commons.apache.org/proper/commons-collections/
19.
common io v2.4
Commons
IO is a library of utilities to assist with developing IO
functionality.
http://commons.apache.org/proper/commons-io/
20.
common cli v1.2
The
Apache Commons CLI library provides an API for parsing command line
options passed to programs. It's also able to print help messages
detailing the options available for a command line tool.
http://commons.apache.org/proper/commons-cli/
20.
common beanutils v1.8.3
Most
Java developers are used to creating Java classes that conform to the
JavaBeans naming patterns for property getters and setters. It is
natural to then access these methods directly, using calls to the
corresponding getXxx and setXxx methods. However, there are some
occasions where dynamic access to Java object properties (without
compiled-in knowledge of the property getter and setter methods to be
called) is needed.
http://commons.apache.org/proper/commons-beanutils/
21.
zookeeper v3.4.5
ZooKeeper
is a centralized service for maintaining configuration information,
naming, providing distributed synchronization, and providing group
services. All of these kinds of services are used in some form or
another by distributed applications. Each time they are implemented
there is a lot of work that goes into fixing the bugs and race
conditions that are inevitable. Because of the difficulty of
implementing these kinds of services, applications initially usually
skimp on them ,which make them brittle in the presence of change and
difficult to manage. Even when done correctly, different
implementations of these services lead to management complexity when
the applications are deployed.
http://zookeeper.apache.org/
22.
lucene v3.0.3
Apache
Lucene is a high-performance, full-featured text search engine
library written entirely in Java. It is a technology suitable for
nearly any application that requires full-text search, especially
cross-platform
http://lucene.apache.org/core/
23.
JavaMail
The
JavaMail API provides a platform-independent and protocol-independent
framework to build mail and messaging applications. The JavaMail API
is available as an optional package for use with the Java SE platform
and is also included in the Java EE platform.
http://www.oracle.com/technetwork/java/javamail/index.html
24.
Java Persistence API
자바
퍼시스턴스 API(Java
Persistence API,JPA)는
관계형 데이터베이스에 접근하기 위한 표준 ORM
기술을
제공하며,
기존에
EJB에서
제공되던 엔터티 빈(Entity
Bean)을
대체하는 기술이다.
JPA는
JSR
220에서
정의된 EJB
3.0 스펙의
일부로 정의가 되어 있지만,
JPA는
EJB
컨테이너에
의존하지 않으며 EJB,
웹
모듈 및 Java
SE 클라이언트에서
모두 사용이 가능하다.
또한,
JPA는
사용자가 원하는 퍼시스턴스 프로바이더 구현체를
선택해서 사용할 수 있다.(http://ko.wikipedia.org/wiki/JPA
)
http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html
25.
Java UUID Generator v3.1.2
Java
Uuid Generator (JUG) is a pure java UUID generator, that can be used
either as a component in a bigger application, or as a standalone
command line tool (similar to Unix 'uuidgen'). UUIDs are 128-bit
Universally Unique IDentifiers (aka GUID, Globally Unique IDentifier
used in Windows world).
http://wiki.fasterxml.com/JugHome
26.
hazelcast v 1.9.3.1
Hazelcast
is an open source clustering and highly scalable data distribution
platform for Java, which is:
-
Lightning-fast; thousands of operations/sec.
-
Fail-safe; no losing data after crashes.
-
Dynamically scales as new servers added.
-
Super-easy to use; include a single ja
http://www.hazelcast.com/
27.
curator
Curator
is a set of Java libraries that make using Apache ZooKeeper much
easier.
http://curator.incubator.apache.org/
http://netflix.github.io/curator/
28.
jackson
Inspired
by the quality and variety of XML tooling available for the Java
platform (StAX, JAXB, etc.), the Jackson is a multi-purpose Java
library for processing JSON. Jackson aims to be the best possible
combination of fast, correct, lightweight, and ergonomic for
developers.
http://jackson.codehaus.org/
29.
spring
스프링
프레임워크(Spring
Framework)는?자바
플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서
간단히 스프링(Spring)이라고도
불린다.
동적인
웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고
있다.
http://spring.io/
30.
snakeyml v1.8
YAML
is a data serialization format designed for human readability and
interaction with scripting languages.
SnakeYAML
is a YAML parser and emitter for the Java programming language.
https://code.google.com/p/snakeyaml/
31.
jsoup v1.6
jsoup
is a Java library for working with real-world HTML. It provides a
very convenient API for extracting and manipulating data, using the
best of DOM, CSS, and jquery-like methods.
http://jsoup.org/
32.
perf4j v0.9.12
Perf4J
is a set of utilities for calculating and displaying performance
statistics for Java code. For developers who are familiar with
logging frameworks such as log4j or logback, an analogy helps to
describe Perf4J
http://perf4j.codehaus.org/
33.
aspectj v1.6
AspectJ
is an aspect-oriented programming (AOP) extension created at PARC for
the Java programming language. It is available in Eclipse Foundation
open-source projects, both stand-alone and integrated into Eclipse.
AspectJ has become a widely-used de facto standard for AOP by
emphasizing simplicity and usability for end users. It uses Java-like
syntax, and included IDE integrations for displaying crosscutting
structure since its initial public release in
2001.(http://en.wikipedia.org/wiki/AspectJ)
http://eclipse.org/aspectj/
34.
cglib v2.2.2
CGLIB는
코드 생성 라이브러리로서(Code
Generator Library) 런타임에
동적으로 자바 클래스의 프록시를 생성해주는 기능을
제공한다.
(http://blog.daum.net/bacsumu/13042134
)
http://cglib.sourceforge.net/
35.
Jline v0.9.94
JLine
is a Java library for handling console input. It is similar in
functionality to BSD editline and GNU readline. People familiar with
the readline/editline capabilities for modern shells (such as bash
and tcsh) will find most of the command editing features of JLine to
be familiar.
http://jline.sourceforge.net/
36.
netty v3.2.7
Netty
is a NIO client server framework which enables quick and easy
development of network applications such as protocol servers and
clients. It greatly simplifies and streamlines network programming
such as TCP and UDP socket server.
http://netty.io/
37
cassandra thrift
The
purpose of using Thrift in Cassandra was to allow portable (across
programming languages) access to the database
http://wiki.apache.org/cassandra/ThriftInterface
38.
thrift
The
Apache Thrift software framework, for scalable cross-language
services development, combines a software stack with a code
generation engine to build services that work efficiently and
seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl,
Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi
and other languages.
http://thrift.apache.org/
39.
apache commons lang v2.5
The
standard Java libraries fail to provide enough methods for
manipulation of its core classes. Apache Commons Lang provides these
extra methods.
http://commons.apache.org/proper/commons-lang/
39.
apache commons codec v2.5
Apache
Commons Codec (TM) software provides implementations of common
encoders and decoders such as Base64, Hex, Phonetic and URLs.
http://commons.apache.org/proper/commons-codec/
40.
apache shiro v 1.2.0
Apache
Shiro is a powerful and easy-to-use Java security framework that
performs authentication, authorization, cryptography, and session
management. With Shiro’s easy-to-understand API, you can quickly
and easily secure any application – from the smallest mobile
applications to the largest web and enterprise applications.
http://shiro.apache.org/
41
guava v12.0
The
Guava project contains several of Google's core libraries that we
rely on in our Java-based projects: collections, caching, primitives
support, concurrency libraries, common annotations, string
processing, I/O, and so forth.
https://code.google.com/p/guava-libraries/
42
jsr305 v1.3.9
Annotations
for Software Defect Detection
http://jcp.org/en/jsr/detail?id=305
43.
SLF4J v1.6.1
jdk나
log4j등과
통합하여 사용할 수 있는 로깅프레임웍이다.
http://www.slf4j.org/manual.html
44
log4j v1.2.16
The
Apache Logging Services Project creates and maintains open-source
software related to the logging of application behavior and released
at no charge to the public.
http://logging.apache.org/
45.
Gradual migration to SLF4J from Jakarta Commons Logging (JCL)
jcl-over-slf4j.jar
jul-to-slf4j.jar
http://www.slf4j.org/legacy.html
46
mock javamail v1.9
Mock
JavaMail comes to rescue. This project takes advantage of
pluggability in JavaMail, so that you can send/receive e-mails
against the temporary in-memory "mailbox". For example,
when this jar is in your classpath, the following code that normally
sends e-mail to me actually just sends the e-mail to an in-memory
mailbo
https://java.net/projects/mock-javamail
47.
hamcrest v1.3
Hamcrest
is a library of matchers, which can be combined in to create flexible
expressions of intent in tests.
https://github.com/hamcrest/JavaHamcrest
48
amber v0.22
Apache
Oltu(amber) is an OAuth protocol implementation in Java.
http://oltu.apache.org/download.html
http://oauth.net/2/
OAuth
2.0
OAuth
2.0 logoOAuth 2.0 is the next evolution of the OAuth protocol which
was originally created in late 2006. OAuth 2.0 focuses on client
developer simplicity while providing specific authorization flows for
web applications, desktop applications, mobile phones, and living
room devices. This specification is being developed within the IETF
OAuth WG and is based on the OAuth WRAP proposal.
49.
Jettison v1.2
Jettison
is a collection of Java APIs (like STaX and DOM) which read and write
JSON. This allows nearly transparent enablement of JSON based web
services in services frameworks like CXF or XML serialization
frameworks like Xstream.
http://jettison.codehaus.org/
50.
stax v1.0.1
This
is the homepage for the StAX Reference Implementation (RI). StAX is a
standard XML processing API that allows you to stream XML data from
and to your application. This StAX implementation is the standard
pull parser implementation for JSR-173 specification.
http://stax.codehaus.org/
51.
jcloud
Apache
jclouds® is an open source library that helps you get started in the
cloud and utilizes your Java or Clojure development skills. The
jclouds API gives you the freedom to use portable abstractions or
cloud-specific features.
http://jclouds.incubator.apache.org/
52.
google guice v3.0
Put
simply, Guice alleviates the need for factories and the use of new in
your Java code. Think of Guice's @Inject as the new new.
You will still need to write factories in some cases, but your code
will not depend directly on them. Your code will be easier to change,
unit test and reuse in other contexts.
https://code.google.com/p/google-guice/
53.
rocoto v6.1
Rocoto
is a small collection of reusable Modules for Google
Guice to
make easier the task of loading java.util.Properties by
reading configuration files.
http://99soft.github.io/rocoto/
54
gson v2.2
Gson
is a Java library that can be used to convert Java Objects into their
JSON representation. It can also be used to convert a JSON string to
an equivalent Java object. Gson can work with arbitrary Java objects
including pre-existing objects that you do not have source-code of.
https://code.google.com/p/google-gson/
55.
jython v2.5
Python
for the java platform
http://www.jython.org/
56.
jsr250
Common
Annotations for the JavaTM Platform
http://en.wikipedia.org/wiki/JSR_250