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)을 대체하는 기술이다. JPAJSR 220에서 정의된 EJB 3.0 스펙의 일부로 정의가 되어 있지만, JPAEJB 컨테이너에 의존하지 않으며 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

jdklog4j등과 통합하여 사용할 수 있는 로깅프레임웍이다.

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



Posted by sjokim
,