Wednesday, June 14, 2006

JavaNCSS - A Source Measurement Suite for Java

JavaNCSS - A Source Measurement Suite for Java: "Ever wondered how many lines of code or how many classes there are in the Sun JDK? Curious about the size of your own projects - or do you want to keep track of your work-progress. That's what JavaNCSS is for.

JavaNCSS is a simple command line utility which measures two standard source code metrics for the Java programming language. The metrics are collected globally, for each class and/or for each function.

Here is an example about what JavaNCSS prints out for the Sun JDK 1.1.5 java.* source tree (update: JDK 1.5 api source tree consists of 569'830 ncss).

JavaNCSS can optionally present its output with a little graphical user interface. To interactively select Java source files for counting, Jacob (a Java class browser and project manager) can be used for this purpose.

JavaNCSS can also be used out of an Ant build.xml script as it comes bundled with an Ant task written by Steve Jernigan. The JavaNCSS Ant Task is documented on a separate page.

You can always find the newest version of this page at: http://www.kclee.de/clemens/java/javancss/"

CSDL - Software Tools and Services - LOCC

CSDL - Software Tools and Services - LOCC

Metrics 1.3.6

Metrics 1.3.6

Saturday, June 03, 2006

Checkstyle - Checkstyle 4.1

Checkstyle - Checkstyle 4.1: "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.

Checkstyle is highly configurable and can be made to support almost any coding standard. An example configuration file is supplied supporting the Sun Code Conventions. As well, other sample configuration files are supplied for other well known conventions.

A good example of a report that can be produced using Checkstyle and Maven can be seen here."

JGAP: Java Genetic Algorithms Package

JGAP: Java Genetic Algorithms Package

JGAP (pronounced "jay-gap") is a genetic algorithms component written in the form of a Java framework. It provides basic genetic mechanisms that can be easily used to apply evolutionary principles to problem solutions. The next version will introduce Genetic Programming!

JGAP has been written to be very easy to use "out of the box," while also designed to be highly modular so that more adventurous users can easily plug-in custom genetic operators and other sub-components.

Thursday, June 01, 2006

Home Page of Jad - the fast Java decompiler

Home Page of Jad - the fast Java decompiler

Die Homepage des Java Decompilers is offensichtlich von Tripod hierher umgezogen.

Wednesday, May 31, 2006

DBCopy Plugin Home Page

DBCopy Plugin Home Page: "DB Copy Plugin is a plugin for the SQuirreL SQL Client (1.2beta6 and 2.0 RC1 )
that allows copying database objects (schema def and data) from one session window to another.

The source and destination sessions can be different database vendors (Hibernate is
used internally for data type translation)."

HelpSetMaker - Ein Programm zur Erstellung von Online-Hilfe-Systemen

HelpSetMaker - Ein Programm zur Erstellung von Online-Hilfe-Systemen: "HelpSetMaker - Ein Programm zur Erstellung von Online-Hilfe-Systemen

Hinweis: HelpSetMaker richtet sich grunds�tzlich an Muttersprachler verschiedener Sprachen. Das Programm ist momentan mit deutscher und englischer Benutzeroberfl�che ausgestattet. Die Online-Hilfe und die Seiten bei SourceForge sind aber nur in Englisch verf�gbar."

JHelpDev

JHelpDev

This is an overview of all features that have been implemented in the respective current version of JHelpDev. The requested features section provides an outlook for the future.
Implemented

* creates the map file from existing HTML files in a directory including targets
* convenient TOC editor with a tree view, image support
* smart automatic TOC generation searches HTML files for "title-like" entries and preserves existing entries
* powerful index editor allowing for quickly jumping to the location in the helpset
* two synchronized views for convenient index creation
* HS Editor for the views and labels of the JHelpNavigator
* list of recently visited projects, starts browsing in last directory
* support of subhelpsets
* easy to use preview with the original helpviewer
* one click creation of search database
* a context-sensitive helpsystem created with JHelpDev
* configuration changes are stored in an XML format

Monday, May 22, 2006

XMLmind: Aptconvert

XMLmind: Aptconvert: "Aptconvert is a command-line tool that can be used to convert the APT format to HTML, XHTML, PDF, PostScript, (MS Word loadable) RTF, DocBook SGML and DocBook XML."

Terracotta - Enterprise-class clustering for Java

Terracotta - Enterprise-class clustering for Java: "Clustering the JVM, Not the Application
Terracotta DSO is a runtime solution for clustering JVMs, instead of the application. By extending the Java heap, Terracotta DSO creates one “clustered” JVM that shares object state and behavior. Tuning the clustering behavior can now be done at runtime without code changes. Developers can focus on business logic, not infrastructure."

Marthon User Guide

Marthon User Guide: "Marathon is a general purpose tool for both running and authoring acceptance tests geared at the applications developed using Java and Swing. Included with marathon is a rich suite of components to help you interact with your application at the User Interface Level (GUI).

Marathon tests are scripted using Jython, a 100% pure java implementation of the programming language Python -- the emphasis being on a extremely simple, highly readable syntax that customers, analysts, testers and developers can all be comfortable with. But don't let the simplicity fool you. Python is a mature, full-featured programming language, so testers and developers don't need to sacrafice anything in terms of the power and creativity with which they can express their tests.

To aid with the regression testing of existing applications, Marathon comes bundled with a recorder to capture events as you use and interact with your application. These events are then converted into a valid Marathon test which can subsequently be played back."

Thursday, May 18, 2006

JSqlParser - Home

JSqlParser - Home

BNF Grammars for SQL-92, SQL-99 and SQL-2003

BNF Grammars for SQL-92, SQL-99 and SQL-2003

BNF for Java: Project Home Page

BNF for Java: Project Home Page

jGuru: JaVaCC Grammar modification required.

jGuru: JaVaCC Grammar modification required.

jGuru: JaVaCC Grammar modification required.

jGuru: JaVaCC Grammar modification required.

JaVaCC Grammar modification required.
Topic: JavaLanguage
Vijendra Singh, Mar 14, 2006
Hi, If someone has good command over writing .jj or.jjt files. I need some help in writing code. I need to incorporate in my sqlParser.jj and ultimately sqlParser.java files; so that they can read and parse :- "create view as select * from tablename" statement. This sqlParser.jj files are generating ASCII_char_stream instead Simple_char_stream, but i don't think it will create any problem. So just like it parsers create table...statement,delete,alster tables etc. It sholud also parse view without giving any error. I am giving this file with some modification i tried to do for views but grammar is mistaken please give me some useful way to solve this Thanks Vijendra New Page 1

/**
* Creation date: July 19th, 2000
* This is the JavaCC grammar definition file for the DDL dialect used by
* ZeroCode.
*/


// options {
// DEBUG_PARSER = true;
// }


PARSER_BEGIN(SqlParser)

package zerocode.sqlParser;

import com.sun.java.util.collections.*;
import java.io.*;
import java.util.Enumeration;

import zerocode.dbSupport.*;
import zerocode.core.*;



/**
* The SqlParser class encapsulates parsing of SQL DDL statements to enable
* zeroCode to construct the schema-related data structures. Most of its
* implementation is generated using the
* JavaCC
* application.
*/
public class SqlParser {


public interface ConstraintType {

public static final int UNIQUE = 1;

public static final int PRIMARY_KEY = 2;

}


public static void main (String args[]) throws Exception {
Schema dbSchema = buildSchema (new InputStreamReader (System.in));
System.out.println (dbSchema.toString());
}



public static synchronized Schema buildSchema (Reader stream)
throws ZcException {
_fkConstraints = new ArrayList();
_errorList = new Vector();
_dbSchema = new Schema ("ZeroCodeSchema");
if (_parser == null)
_parser = new SqlParser (stream);
else
_parser.ReInit (stream);
try {
_parser.ddlSequence ();
} catch (ParseException e) {
throw new ZcException
(ErrorCode.INVALID_SCHEMA, "SQL syntax error: " + e.getMessage());
}
_dbSchema.setConstraints (_fkConstraints);


if (_errorList.size() > 0)
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
"Schema errors:\n" + StringUtils.join (_errorList, "\n"));
return _dbSchema;
}



private static void addTable (DbTable table) {
_dbSchema.addTable (table);
}



private static void addSequence (String sequenceName) {
_dbSchema.addSequence (sequenceName);
}



private static int convertToken (String message)
throws ZcException {
try {
int val = Integer.parseInt (token.toString());
return val;
} catch (NumberFormatException e) {
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
message + "token '" + token.toString() + "' line " +
token.beginLine + " column " + token.beginColumn);
}
}

private static void setConstraint (DbTable table, String constraintName,
int constraintType,
StringSet columnNameSet) {
if (constraintType == ConstraintType.PRIMARY_KEY) {
int nCols = columnNameSet.size();
if (nCols > 1) {
// _errorList.add ("Table " + table.name() + ": must have " +
// "exactly one column as primary key.");
// We set the pri key anyway, to inhibit the subsequent
// "No primary key defined" error message.
table.setPrimaryKey (columnNameSet);
} else if (nCols <= 0) {
// _errorList.add ("Table " + table.name() + ": must have " +
// "a primary key.");
} else {
String colName = (String) columnNameSet.asArray()[0];
DbColumn col = table.columnWithName (colName);
if (col == null)
_errorList.add ("Table " + table.name() + ": Column '" +
colName + "', specified in primary key " +
"constraint, is not a declared column.");
else
table.setPrimaryKey (col.name());
}
} else {
// It should be a UNIQUE constraint
table.addUniqueConstraint
(new UniqueConstraint (constraintName, table, columnNameSet));
}
}


private static void addForeignKeyConstraint (String constraintName,
DbTable table,
StringSet columnNameSet,
String toTableName,
String toColName) {
if (columnNameSet.size() != 1) {
// We now silently ignore this problem -- MAS 1/7/2003
// _errorList.add ("Table " + table.name() + ": must have " +
// "exactly one column in foreign key.");
return;
}
String fkColName = columnNameSet.asArray()[0];
DbColumn fkCol = table.columnWithName (fkColName);
if (fkCol == null) {
_errorList.add ("Table " + table.name() +
": Cannot add foreign key constraint: no " +
"foreign key column named '" + fkColName + "'");
return;
}
DbTable toTable = _dbSchema.tableWithName (toTableName);
if (toTable == null) {
_errorList.add ("Table '" + toTableName + "' not found in schema.");
return;
}
DbColumn toColumn = toTable.columnWithName (toColName);
if (toColumn == null) {
_errorList.add ("Attempting to add foreign key from " +
table.name() + "(" +
columnNameSet.joinString(",") + ") to table '" +
toTableName + "': the latter has no column " +
"named '" + toColName + "'");
} else {
String constraintId = constraintName != null
? constraintName
: ("zcFkConstraint" + (++zcFkCount));
ForeignKeyConstraint constraint = new ForeignKeyConstraint
(constraintId, fkCol, toColumn, _fkConstraints.size());
_fkConstraints.add (constraint);
}
}

private static Schema _dbSchema;
private static Vector _errorList;
private static List _fkConstraints;
private static SqlParser _parser;

private static int zcFkCount = 0;
}

PARSER_END(SqlParser)

SKIP :
{
" "
|
"\t"
|
"\n"
|
"\r"
|
"--" : IN_LINE_COMMENT
|
"/*" : IN_COMMENT

}

SKIP:
{
"\n" : DEFAULT
}

MORE:
{
< ~[] >
}

SKIP:
{
"*/" : DEFAULT
}

MORE:
{
< ~[] >
}



TOKEN [IGNORE_CASE] :
{
< ADD: "add" >
| < ALL: "all" >
| < ALTER: "alter" >
| < AND: "and" >
| < ANY: "any" >
| < AS : "as" >
| < ASC: "asc" >
| < BY: "by" >
| < CACHE: "cache" >
| < CASCADE: "cascade" >
| < CHECK: "check" >
| < COLUMN: "column" >
| < COMMENT: "comment" >
| < CONSTRAINT: "constraint" >
| < CONSTRAINTS: "constraints" >
| < CREATE: "create" >
| < CYCLE: "cycle" >
| < DEFAULT_TOK: "default" >
| < DELETE: "delete" >
| < DESC: "desc" >
| < DROP: "drop" >
| < FOREIGN: "foreign" >
| < IDENTITY: "identity" >
| < IN: "in" >
| < INCREMENT: "increment" >
| < INDEX: "index" >
| < IS: "is" >
| < KEY: "key" >
| < MAXVALUE: "maxvalue" >
| < MINVALUE: "minvalue" >
| < NOCACHE: "nocache" >
| < NOCYCLE: "nocycle" >
| < NOMAXVALUE: "nomaxvalue" >
| < NOMINVALUE: "nominvalue" >
| < NOORDER: "noorder" >
| < NOT: "not" >
| < NULL: "null" >
| < ON: "on" >
| < OR: "or" >
| < ORDER: "order" >
| < PRIMARY: "primary" >
| < REFERENCES: "references" >
| < SELECT: "select" >
| < SEQUENCE: "sequence" >
| < SOME: "some" >
| < START: "start" >
| < TABLE: "table" >
| < UNIQUE : "unique" >
| < UPDATE : "update" >
| < VIEW : "view" >
| < WITH: "with" >


| < COMMA: "," >
| < DOT: "." >
| < IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z", "_", "0"-"9", "$", "#"])* >
| < LPAREN: "(" >
| < NUMBER: (["0"-"9"])+ >
| < RPAREN: ")" >
| < SEMICOLON: ";" >
| < SLASH: "/" >
| < STRING_LITERAL:
(
"'"
(~["'","\\","\n","\r"])*
"'"
)+
>
}


String allowedColumnName () :
{}
{
(
LOOKAHEAD(2)
< IDENTIFIER >
| < ANY >
| < AS >
| < ASC >
| < BY >
| < CACHE >
| < CASCADE >
| < CHECK >
| < COLUMN >
| < COMMENT >
| < CONSTRAINTS >
| < CREATE >
| < CYCLE >
| < DEFAULT_TOK >
| < DELETE >
| < DESC >
| < DROP >
| < FOREIGN >
| < IDENTITY >
| < IN >
| < INCREMENT >
| < INDEX >
| < IS >
| < KEY >
| < MAXVALUE >
| < MINVALUE >
| < NOCACHE >
| < NOCYCLE >
| < NOMAXVALUE >
| < NOMINVALUE >
| < NOORDER >
| < NOT >
| < NULL >
| < ON >
| < OR >
| < ORDER >
| < PRIMARY >
| < REFERENCES >
| < SELECT >
| < SEQUENCE >
| < SOME >
| < START >
| < TABLE >
| < UNIQUE >
| < UPDATE >
| < VIEW >
| < WITH >
) { return token.toString(); }
}


void ddlSequence () throws ZcException :
{
DbTable table;
String sequenceName;
}

{
(
(
comment()
|
(

(
table = tableDefinition () {
addTable (table);
}

|
indexDefinition ()
|
sequenceName = sequenceDefinition ()
{
addSequence (sequenceName);
}
)
)
|
(

(
view = viewDefinition ()
)
)
|
alterTable ()
|
dropTable()

)
(

|

)+
)+

}


void comment () :
{ }
{


(
(


)
|
(




)
)


}


DbTable tableDefinition () throws ZcException :
{
DbTable table;
DbColumn col;
}
{
{
table = new DbTable
(token.toString(), _dbSchema);
}


col = columnDefinition (table)
(

(
LOOKAHEAD(2)
col = columnDefinition (table)
|
constraint (table)
)

)*


{return table;}
}

//for view modified one
DbTable viewDefinition () throws ZcException :
{
DbTable view;
String col;
}
{
{
view = new DbTable
(token.toString(), _dbSchema);
}

col = columnName (col)
(

(
LOOKAHEAD(2)
col = columnName (col)
)
)*

{return view;}
}
//for view modified one
String columnName (String column)
throws ZcException :
{
String columnName, columnType;
}
{
(
columnName = allowedColumnName()
{columnType = token.toString();}
( {
columnType += " " + token.toString();
}
)

)
{return col;}
}

//for table
DbColumn columnDefinition (DbTable table)
throws ZcException :
{
String columnName, columnType;
int size = 0, precision = 0;
boolean nullable = true;
DbColumn col;
}
{
(
columnName = allowedColumnName()
{columnType = token.toString();}
( {
columnType += " " + token.toString();
}
)?
(

{
size = convertToken ("Integer size expected");
}

(

{
precision = convertToken
("Integer precision expected");
}
)?

)? {
col = new DbColumn
(columnName, columnType, size, precision,
table.columnCount(), nullable, table);
table.addColumn (col);
}
(
columnConstraint(col)
)*
)
{return col;}
}



void columnConstraint (DbColumn col) throws ZcException:
{
boolean nullable = true;
String toTableName, toColumnName, constraintName;
int constraintType;
StringSet colNameSet = null;
}
{
(

{
constraintName = token.toString();
}
(
(

{
constraintType = ConstraintType.UNIQUE;
}
)
|

(

{
constraintType = ConstraintType.PRIMARY_KEY;
col.table().setPrimaryKey (col.name());
}
)

|

(
(


(

)? {
constraintName = token.toString();
}
)?

{
toTableName = token.toString();
DbTable toTable = _dbSchema.tableWithName
(toTableName);
if (toTable == null)
throw new ZcException
(ErrorCode.INTERNAL_ERROR,
"Foreign key reference to nonexistent " +
"table '" + toTableName + "': line " +
token.beginLine + ", column " + token.beginColumn);
toColumnName = toTable.primaryKeyName();
if (toColumnName == null)
throw new ZcException
(ErrorCode.INTERNAL_ERROR,
"Foreign key reference to table '" +
toTableName + "' with no primary key: line " +
token.beginLine + ", column " + token.beginColumn);
}
(

colNameSet = columnNameList()

)? {
DbTable table = col.table();
if (colNameSet != null && colNameSet.size() > 0){
if (colNameSet.size() > 1)
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
"Column " + col + " refers to " +
"more than one column: line " +
token.beginLine + ", column " +
token.beginColumn);
toColumnName = colNameSet.asArray()[0];
}
StringSet colNames = new StringSet();
colNames.add (col.name());
addForeignKeyConstraint
(constraintName, table, colNames, toTableName, toColumnName);
}
)
)
)
|
(


checkCondition()

)
|
(
(
{
col.setNullable (false);
}
)?

)
|
(
defaultClause()
)
|
(

(





)?
{
col.setIdentity ();
}
)
}




void defaultClause () :
{}
{

defaultExpr()
}


void constraint (DbTable table) throws ZcException :
{
String constraintName = null;
int constraintType = 0;
StringSet colNameSet = null, refColNameSet = null;
String toTableName = null;
String toColumn = null;
}
{

(

{
constraintName = token.toString();
}
)?
(
(

(
{
constraintType = ConstraintType.UNIQUE;
}

|

(

{
constraintType = ConstraintType.PRIMARY_KEY;
}
)
)

colNameSet = columnNameList ()
{
setConstraint (table, constraintName,
constraintType, colNameSet);
}
)

|

(


(
{
constraintName = token.toString();
}
)?

colNameSet = columnNameList()


{
toTableName = token.toString();
DbTable toTable = _dbSchema.tableWithName (toTableName);
if (toTable == null)
throw new ZcException
(ErrorCode.INTERNAL_ERROR,
"Foreign key reference to nonexistent " +
"table '" + toTableName + "': line " +
token.beginLine + ", column " + token.beginColumn);
toColumn = toTable.primaryKeyName();
}
(

refColNameSet = columnNameList ()

)? {
if (refColNameSet != null && refColNameSet.size() > 0) {
toColumn = refColNameSet.asArray()[0];
}
addForeignKeyConstraint
(constraintName, table, colNameSet, toTableName, toColumn);
}
)
|
(


checkCondition()

)
)
}





StringSet columnNameList () :
{
StringSet columns = new StringSet();
}
{

{
columns.add (token.toString());
}
(

{
columns.add (token.toString());
}
)*

{return columns;}


}




void alterTable () throws ZcException :
{
String tableName = null;
DbTable table = null;
}
{


{
tableName = token.toString();
table = _dbSchema.tableWithName (tableName);
if (table == null)
throw new ZcException
(ErrorCode.INTERNAL_ERROR,
"Invalid ALTER TABLE: " +
"No table with name '" + tableName + "': line " +
token.beginLine + ", column " + token.beginColumn);
}

(
constraintClause (table)
(

constraintClause (table)
)*
|
(

constraintClause (table)

)
)
}



void constraintClause (DbTable table) throws ZcException:
{
}
{
constraint (table)
(

( | )

)?
}




void dropTable () :
{}
{



(


)?
}





void indexDefinition () :
{}
{
(

)?






(

|

)?
(


(

|

)?
)*

}


String sequenceDefinition () :
{
String name;
}
{

{ name = token.toString(); }
(
(

)
|
(

)
|
(

)
|

|

|

|

|
(

)
|

|
(

)
|

|

)*
{return name;}
}


void defaultExpr () :
{}
{

|

|
(

(

defaultExpr()
(

defaultExpr()
)*

)?
)
|
(

defaultExpr()

)
}


void checkCondition() :
{}
{
(

checkCondition()

)
|
(

checkCondition2()
)
|
(
checkCondition2()
(
(

|

)
checkCondition()
)?
)
}


void checkCondition2() :
{}
{
expr()
(
(
(
"="
|
"!="
|
">"
|
">="
|
"<"
|
"<="
)
(
expr()
|
(

|

|

)
exprList()
)
)
|
(

exprList()
)
)?
}


void expr () :
{}
{
(

|

|

)
(
(
"+"
|
"-"
|
"*"
|

)
expr()
)?
}

void exprList () :
{}
{

expr()
(

expr()
)*

}






JavaCC Grammar Repository

JavaCC Grammar Repository

Zql: a Java SQL parser

Zql: a Java SQL parser

Tuesday, May 16, 2006

Jxp - Introduction

Jxp - Introduction: "Jxp (Java scripted page) is a script-processor/template-engine that can execute template files containing text java code. It contains a parser to parse the script file into an abstract syntax tree and a tree processor (JxpProcessor) that will process the syntax tree to execute the code using reflection API to produce output. Some of the main features of Jxp include:

* Java as template language. Why learn another one? ;)
* support common java language 1.4 constructs (partial 1.5 syntax support on jdk 1.4)
* practical template sources management framework
* support caching of parsed syntax tree to eliminate reparse of template
* a servlet implementation to enable web-scripting
* extensible processing context for defining built-in function on the scripts

Below is an example of a script file"

Friday, May 12, 2006

MMBase: MMBase - Homepage

MMBase: MMBase - Homepage: "MMBase is a Web Content Management System with strong multi media features and advanced portal functionalities. MMBase has a large installed base in The Netherlands, and is used by major Dutch broadcasters, publishers, educational institutes, national and local governments. MMBase is written in Java, it is Open Source Software (MPL) and all standards used are as 'open' as possible. The system can be used with all major operating systems, application servers and databases. "

SVN for Eclipse : Polarion Community

Polarion Community: "About Subversive Project
The Subversive project is a brand new Eclipse plug-in that provides Subversion support. From a user point of view, Subversive provides Subversion support similar to CVS support, which is already part of the standard Eclipse platform. The main use cases, which are familiar to CVS users, are:

* Connection to the repository using different connection types
* Repository browsing
* Check-out
* Synchronization
* Commiting
* Update
* Resolving conflicts
* Adding to the list of ignored resources"

Sunday, May 07, 2006

GraphicPrinter (SAP Mobile Infrastructure 2.5 [API-JavaDoc])

GraphicPrinter (SAP Mobile Infrastructure 2.5 [API-JavaDoc])

Barbecue - Barbecue

Barbecue - Barbecue: "Barbecue

Barbecue is an open-source, Java barcode library that provides the means to create barcodes for printing and display in Java applications. A number of barcode formats are supported and many more can be added via the flexible barcode API. Barcodes can be outputted to Graphics objects, or used as a Swing component, or written out as SVG. Please use the links on the left to find out more about Barbecue."

Welcome to Barcode4J

Welcome to Barcode4J: "Barcode4J is a flexible generator for barcodes written in Java. It's free, available under the Apache License, version 2.0."

Thursday, May 04, 2006

iScreen - The Java Object Validation Framework

iScreen - The Java Object Validation Framework

iScreen is a Java Object Validation Framework, suitable for validating Java Objects (including JavaBeans) to ensure that they are "valid" according to some definition (usually via configuration). The term 'iScreen' means "information screen," where 'screen' means to protect or conceal. Information, represented by Java objects, are passed through the screen. If they are considered acceptable (i.e. valid), then nothing occurs. If not, then an exception is thrown, allowing the application to notify someone or something of the invalid information.

Friday, March 24, 2006

JAAS Tutorial: Single Sign-On mit Kerberos gegen Windows Domain

JAAS Tutorial: Single Sign-On mit Kerberos gegen Windows Domain

Ein Verzeichnisdienst ermöglicht die zentrale Verwaltung von Ressourcen und ein Single Sign-On über verschiedene Systeme. Die dafür notwendigen Schnittstellen bietet der Java Authentication and Authorization Service (JAAS) und der Java Naming and Directory Service (JNDI).

Dieses Tutorial beschreibt, wie ein Single Sign-On mit JAAS und dem Kerberos Version 5 Authentifizierungsprotokoll umgesetzt werden kann. Als Verzeichnisdienst wurde der Active Directory Service (ADS) von Microsoft verwendet. Mit dem Beispiel wurde das folgende Szenario abgebildet:

* Ein User authentifiziert sich über das Kerberos Version 5 Authentifizierungsprotokoll bei einer Applikation.
* Anschließend wird mittels LDAP aus dem Active Directory des Domänencontrollers die Benutzerrollen des Users ausgelesen.
* Als Beispiel für eine Autorisierung wird, abhängig von den Rollen des Users, die Umgebungsvariablen java.home und user.home ausgegeben.

Sunday, March 19, 2006

- openDBcopy - an open-source database migration utility (Java),database migration,open-source,dbcopy,db,copy any database,jdbc,migrate databases,onli

- openDBcopy - an open-source database migration utility (Java),database migration,open-source,dbcopy,db,copy any database,jdbc,migrate databases,online migration,open-source software GPL,Puzzle ITC: "openDBcopy is a universal database utility to migrate data from and to any database given a JDBC driver.

* Standard filters are included
* Custom plugins can be added and/or developed
* Complete migration project saved as XML for easy re-use
* Run with GUI or as batch process"

Saturday, March 18, 2006

Joda Time - Java date and time API - Home

Joda Time - Java date and time API - Home: "Joda-Time provides a quality replacement for the Java date and time classes. The design allows for multiple calendar systems, while still providing a simple API. The 'default' calendar is the ISO8601 standard which is used by XML. The Gregorian, Julian, Buddhist, Coptic and Ethiopic systems are also included, and we welcome further additions. Supporting classes include time zone, duration, format and parsing."

jNotes

jNotes: "jNotes is an application for personal information management. With jNotes, you can edit the diaries, schedule events and plan your personal projects.

Main features of jNotes:

* Calendar-based user interface for navigation through the date items
* Easy-to-use text editor for diary notes editing
* Support for the numerous collections of the notes (aka 'books')
* Scheduling the events with reminding in a time
* Lightweight ('minimal') alternative start mode for enabling the event notifications in background
* Scheduling the to-do tasks, grouped in the numerous project workflows
* Calculation of the projects execution progress
* Automatic background saving of the all data changes
* Publishing the notes in the various formats (with pluggable export filters)
* XML is the native format of the jNotes data
* Full I18N support. The program can be localized without a rebuilding the source code."

Tuesday, March 14, 2006

Tobago

Tobago: "The goal of Tobago is to provide the community with a well designed set of user interface components based on JSF and run on MyFaces.

Tobago is more than just a tag library. The following statements characterize Tobago and make it different from other frameworks:

* The focus of Tobago is to create business applications without the need for HTML design. The development of Tobago pages follows more the development of conventional user interfaces than the creation of web pages.
* The UI components are abstracted from HTML and any layout information that does not belong to the general page structure. The final output format is determined by the client/user-agent.
* A theming mechanism makes it easy to change the look and feel and to provide special implementations for certain browsers. A fallback solution ensures that as much code is reused for new themes as possible.
* A layout manager is used to arrange the components automatically. This means, no manual layouting with HTML tables or other constructs is needed.

The development of Tobago started in 2002."

taglibrarydoc: Documents & files

taglibrarydoc: Documents & files

Monday, March 13, 2006

Multithreaded Job Queue - The Code Project - Threads, Processes & IPC

Multithreaded Job Queue - The Code Project - Threads, Processes & IPC: "In many of our applications we just want to get some thing done asynchronously. This is where some times we prefer to use job queue. Where we can just assign or add a job to the job queue and then it is the job queue's responsibilities to complete the job. This gives the flexibility to the main thread to concentrate on some thing else where the jobs can be processed at the background. If the job queue can be multithreaded and can process multiple jobs at the same time, it is better.

This article describes such an implementation of job queue. This implementation has the following features :

* The job queue is multi threaded, so many jobs can be processed simultaneously. The job queue uses a pool of threads to execute the jobs.
* The job queue supports priorities. The jobs with high priority will be added before the jobs with lower priority, in the queue. So they will be processed before other lower priority jobs.
* The job queue can be paused, so that no new job can be processed from the time of pause. But the user still can add jobs to the queue. The jobs will be processed once the user choose to resume the job queue.
* The number of threads that will be used by the job queue to process the jobs can be increased or decreased at run time.

Background"

Friday, March 03, 2006

spawn JVM via RMI

Creating an Activatable Remote Object: "The RMI daemon, rmid, provides a Java virtual machine* (JVM) from which other JVM instances may be spawned."

This technique can be used to implement fail-over scenarios. Using the rmid to spawn a JVM you have to keep in mind that, if you are using just ONE rmid, this would be single point of failure (SPOF)!

Another possibility to start a NEW JVM is to use the classes provided in the ANT framework. If you have a look to the source code of the Ant Task and trace back to the point where a new JVM is startet you will find the class Execute, with which it is possible to start a completly new JVM (FORK).

java cluster server

JavaWeb_July_August_05Connections.pdf (application/pdf-Objekt)

JavaWeb_July_August_05Connections.pdf (application/pdf-Objekt)

Tuesday, February 28, 2006

FProfiler - the fast alterantive

FProfiler - the fast alterantive: "FProfiler is a very fast profiler for Java. It uses BCEL and log4j to log every methodstart and -end. FProfiler can be used to find hotspots in your Java Applications, Servlets, Applets... - whatever."

Sunday, February 19, 2006

HA-JDBC: High-Availability JDBC

HA-JDBC: High-Availability JDBC: "HA-JDBC is a JDBC driver proxy that provides light-weight, transparent, fault tolerant clustering capability to any underlying JDBC driver."

Friday, February 17, 2006

ant build File beispiel mit vielen guten Tricks

FishEye: file checkstyle/checkstyle/build.xml: "emma report"

EMMA: a free Java code coverage tool

EMMA: a free Java code coverage tool: "EMMA: a free Java code coverage tool

Code coverage for free: a basic freedom?



Until recently, the world of Java development had been plagued by an absurd discrepancy: Java developers had excellent free IDEs, free compilers, free test frameworks but had to rely on code coverage tools that charged an arm and a leg in license fees. As a Java pro, I would like to use the same free coverage tool regardless of whether it is a massive commercial project at work or a small fun project at home. I've created EMMA to be that tool.

EMMA is an open-source toolkit for measuring and reporting Java code coverage. EMMA distinguishes itself from other tools by going after a unique feature combination: support for large-scale enterprise software development while keeping individual developer's work fast and iterative. Every developer on your team can now get code coverage for free and they can get it fast!

Chances are, you've come here already knowing what coverage is all about and are, in fact, wondering what EMMA offers and why it is worth checking out. Explore the rest of this site to see why."

Sunday, February 12, 2006

EJB fundamentals and session beans

EJB fundamentals and session beans: "Summary
In this article, an excerpt from Beginning Java EE 5 (Apress, October 2005; ISBN: 1590594703), authors Jim Crume, Kevin Mukhar, James Weaver, and Chris Zelnak describe the benefits of using EJBs and focus specifically on how to develop a session bean. (5,500 words; February 13, 2006)"

Friday, February 10, 2006

Home - jstripe.com

Home - jstripe.com: "Welcome to the home of Tomcat Probe. Tomcat Probe is the ultimate tool to manage and monitor your Tomcat instance. Lightweight web user interface, killer features, no-fuss installation and weekly updates. Tomcat Probe gives you total control over live Tomcat instances and applications. For more information please visit the overview section."

OSWorkflow - OSWorkflow Overview

OSWorkflow - OSWorkflow Overview: "OSWorkflow is fairly different from most other workflow systems available, both commercially and in the open source world. What makes OSWorkflow different is that it is extremely flexible. This can be hard to grasp at first, however. For example, OSWorkflow does not mandate a graphical tool for developing workflows, and the recommended approach is to write the xml workflow descriptors 'by hand'. It is up to the application developer to provide this sort of integration, as well as any integration with existing code and databases. These may seem like problems to someone who is looking for a quick 'plug-and-play' workflow solution, but we've found that such a solution never provides enough flexibility to properly fulfill all requirements in a full-blown application."

Friday, February 03, 2006

jarjarclassloader: Home

jarjarclassloader: Home: "The JarJarClassLoader is a program I've wrote to clean up application deployments. The main idea is to be able to include third party JAR files inside a main JAR file instead of having them floating around in the users file system. So far this class loader works well but I'm looking for testing, input, and help from the community to make it, less britile, faster. I'd also love to hear from folks if they find this useful."

JUnit PDF Report

JUnit PDF Report: "The project generates a PDF report from JUnit test results.
It uses Apache Ant to execute the generation, and Apache FOP to render the PDF document.

The project is hosted on SourceForge.net."

Tuesday, January 31, 2006

Coldbeans Software - your store for web components

Coldbeans Software - your store for web components

1. Calendar-servletWAP/WML Live demo
2. ForumWAP/WML Live demo
3. NewsWAP/WML Live demo
4. wwwboardWAP/WML Live demo
5. MessageBoardWAP/WML Live demo

6. ChatServletWAP/WML Live demo
7. Co-browse Servlet
8. Community ServletWAP/WML

9. WebPop-servlet
10. WebMail-servlet
11. MailBoard-servlet

From our users: "Must commend you on a fantastic suite of servets etc.
Very very good."

12. Load balance
13. Protect servlets
14. HTTP proxy servlet
15. Error message servlet

16. File manager
17. ArcManager-servlet

18. ShellServletWAP/WML
19. WAPpingWAP/WML
20. WebTestWAP/WML
21. WAPHeadWAP/WML

From our users: "awesome support and awesome servlets!"

22. Mbox-servlet

23. WebLog-servlet Live demo

24. Slide servlet Live demo

25. TreeView-servlet

26. Classifieds
27. Portal servlet

Thursday, January 19, 2006

AgileTrack - Agile/Extreme Programming Iteration and Task Tracking Tool

AgileTrack - Agile/Extreme Programming Iteration and Task Tracking Tool: "AgileTrack is an open-source Java based application for tracking software development in agile development or extreme programming (XP) teams. It includes support for managing stories and other issues, sub-tasks, tracking time, managing multiple projects, planning iterations, and providing iteration reports. It provides a unique interface that is simple to use and allows software developers to have task information always at their fingertips."

Tuesday, January 17, 2006

subclipse.tigris.org

subclipse.tigris.org

There are three projects hosted on this site:

* Subclipse is an Eclipse plugin that adds Subversion integration to the Eclipse IDE. Subclipse is licensed under the terms of the Common Public License (CPL) 1.0.
* svnClientAdapter is a high-level Java API for Subversion and is used by Subclipse. svnClientAdapter is licensed under the terms of the Apache Software License 2.0
* svnAnt is an Ant task that uses svnClientAdapter and provides access to Subversion from Ant scripts. svnAnt is licensed under the terms of the Apache Software License 1.1

AntDoc web site

AntDoc web site: "AnDoc is an automatic Ant script documentation generation, in the same spirit as the must JavaDoc. This documentation enables to directly execute Ant build files. AntDoc is an Ant task.

AntDoc has now a GUI named AntDocGUI, which is a well featured Ant target runner."

Monday, January 16, 2006

Active JMS

Active JMS: "Activating Java Message Services!

The Java Message Service 1.0.2 API has become the standard for MOM products large and small and its implementation ranges from expensive commercial products to freeware and even open source projects. As its name suggests, however, it only provides a standard Java API. This means that:

* There are no widely accepted standardized, non-Java, non-proprietary messaging APIs.
* Support for non-Java access to many JMS systems is very limited.

These two facts often present a problem for an organization, as they often need to have non-Java clients participate in a JMS network. Until now these organizations had few choices—they could use the JMS vendor’s proprietary ActiveX client (if the vendor offered one), or they could use a general purpose 3rd party Java-ActiveX integration tool. Neither of these solutions is ideal, however, because they are contrary to the ‘open’ nature of the JMS specification itself. You get tied down to a particular vender once again!

The Active JMS open source project was created to solve this problem by offering a freely available, non-proprietary, open source ActiveX JMS client API. With it, you can access a large majority of the JMS functionality without compromise."

OpenJMS - OpenJMS

OpenJMS - OpenJMS: "OpenJMS is an open source implementation of Sun Microsystems's Java Message Service API 1.1 Specification
Features

* Point-to-Point and publish-subscribe messaging models
* Guaranteed delivery of messages
* Synchronous and asynchronous message delivery
* Persistence using JDBC
* Local transactions
* Message filtering using SQL92-like selectors
* Authentication
* Administration GUI
* XML-based configuration files
* In-memory and database garbage collection
* Automatic client disconnection detection
* Applet support
* Integrates with Servlet containers such as Jakarta Tomcat
* Support for TCP, RMI, HTTP and SSL protocol stacks
* Support for large numbers of destinations and subscribers"

Thursday, January 12, 2006

jManage - Web and Command Line Based JMX Client

jManage - Web and Command Line Based JMX Client: "jManage is a open source, web and command-line based JMX client, which provides a centralized console for managing application clusters and distributed-application environments. jManage goes beyond an ordinary JMX client by providing features like Alerts, Graphs, Security, SNMP support, etc. The jManage mission is to provide an open source management platform, which can be used to manage and monitor complete production environment.

jManage is successfully being used by various companies, in Development, QA, Staging and Production environments. It is very easy to setup jManage. Download now and get started. "

JMX4Ant

JMX4Ant


Welcome to the JMX4Ant. JMX4Ant is a set of optional Ant tasks that allows interactions with JMX MBeans.

Like many other programmers, I find Ant to be an extremely handy tool to use in automating away the daily drudgery of routine development tasks. In J2EE development, one kind of drudgery that I have a special dislike for is the creation and management of J2EE resources that my applications depend upon.

My motivation therefore was to provide tasks for J2EE resource creation and management from Ant that I use to build/deploy application. (e.g. create my JDBC pool and JMS queues/topics before I deploy my entity and message driven beans...), but the tasks are general enough for much broader use (i.e. general purpose J2EE server and application administration).

If you have questions, comments, or suggestions for improvements please feel free to contact me directly, or post to one of the JMX4Ant lists on Sourceforge.

Version 1.2 of JMX4Ant contains a number of important new features and some bug fixes as well. One of the most requested enhancements for JMX4Ant that is now part of v1.2 is support for WebLogic's Targets property, and addTarget method. This enhancement allows JMX4Ant to deploy and undeploy the resources that are created to a particular target server. For more information on v1.2 features, refer to the Change History section of this document.

jvmstat

jvmstat: "The jvmstat technology adds light weight performance and configuration instrumentation to the HotSpot JVM and provides a set of monitoring APIs and tools for monitoring the performance of the HotSpot JVM in production environments. The instrumentation is designed such that it is 'always on', yet has negligible performance impact. The monitoring interfaces added to the HotSpot JVM are proprietary and may or may not be supported in future versions of the HotSpot JVM.

* Introduction
* HotSpot™ Monitoring Tools and Utilities
* Download
* Installation
* Instrumentation
* Support (including the jvmstat FAQ)"

The JTR Java Test Runner Project

The JTR Java Test Runner Project: "JTR, acronym for Java Test Runner, is a Java framework that helps developers in building stress test suites. JTR has been devised with some targets in mind:

*

ease of use
*

extendability
*

high configurability
*

modularity
*

rapid development
*

providing J2EE developers with those facilities they usually need
*

ready to use logging facilities
*

Inversion of Control: let the JTR framework inject runtime properties into your runners
*

complete control of the exceptions potentially raised during your test runs

I decided to start devising & coding JTR since I was looking for a framework that could have helped me in building a complex J2EE test environment. The need came out one day at work: I had to stress test a J2EE application and after looking around for suitable testing frameworks I simply decided to start out writing my own one. This approach does not means the JTR framework either is or will be closed with respect to other testing frameworks. Infact it is my firm willing to integrate it with the most popular ones out there nowadays in the next future.
More information covering the most interesting details of the aims sketched above is provided in the reminder of this document (Project Details)."

Tuesday, January 10, 2006

Quartz - Quartz Overview

Quartz - Quartz Overview: "Quartz is a full-featured, open source job scheduling system that can be integrated with, or used along side virtually any J2EE or J2SE application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components or EJBs. The Quartz Scheduler includes many enterprise-class features, such as JTA transactions and clustering.

Quartz is freely usable, licensed under the Apache 2.0 license."

Monday, January 09, 2006

dbdoclet Homepage

dbdoclet Homepage: "The DocBook Doclet (dbdoclet) creates DocBook code from Java source documentation. It is helpful, if you want to print reference handbooks of your API. The program can be used as javadoc doclet or as standalone application. The standalone application can be used as a converter to transform HTML documents to DocBook documents. Additionally DocBookDoclet comes with a Swing application called dbdoclet.TiDBit, which helps you to manage your documentation projects and to create PDF files."

XStream - About XStream

XStream - About XStream: "XStream is a simple library to serialize objects to XML and back again.
Features

* Ease of use. A high level facade is supplied that simplifies common use cases.
* No mappings required. Most objects can be serialized without need for specifying mappings.
* Performance. Speed and low memory footprint are a crucial part of the design, making it suitable for large object graphs or systems with high message throughput.
* Clean XML. No information is duplicated that can be obtained via reflection. This results in XML that is easier to read for humans and more compact than native Java serialization.
* Requires no modifications to objects. Serializes internal fields, including private and final. Supports non-public and inner classes. Classes are not required to have default constructor.
* Full object graph support. Duplicate references encountered in the object-model will be maintained. Supports circular references.
* Integrates with other XML APIs. By implementing an interface, XStream can serialize directly to/from any tree structure (not just XML).
* Customizable conversion stategies. Strategies can be registered allowing customization of how particular types are represented as XML.
* Error messages. When an exception occurs due to malformed XML, detailed diagnostics are provided to help isolate and fix the problem."

ClassEncrypt Software

ClassEncrypt Software: "ClassEncrypt is a program that can encrypt a developer's class files to prevent malicious users from stealing the source code. The program uses a modular design to allow the developer to create different encryption modules for the program to use. This software does not prevent the developer's software from being pirated.

The software comes with a default module that encrypts and decrypts using the Blowfish algorithm that was created by Bruce Schneier. This software is meant to be a barrier of protection for Java developers who want to market their software. It is not at all foolproof since the software enables the encrypted class files to still run using the regular JVM. It does, however, slow down any reverse engineering that someone may try on the developer's software."

Sunday, January 08, 2006

jcoverage

jcoverage

At jcoverage we are about productivity. Our suite of tools and technologies aim to reduce the 'code - test - diagnose - fix' cycle.

If you are using code coverage tools, you are also writing tests. We believe that you can improve your test development productivity at the same time.

Once you have coded, your tests and coverage analysis should run quickly so you can check outcomes and deliver changes as required from test feedback. It should also be able to easily test units in isolation rather than testing system as a whole.

You can start by downloading jcoverage/gpl, our free code coverage tool. Get started and see how much of your code is being covered by tests.

Once you have seen what our free coverage tool can do for you, why not use the fully supported jcoverage commercial edition.

Where your testing is less than adequate, you can improve your test quality and coverage through the use of our mock object technologies, included in our flagship product jcoverage+.

jcoverage+ includes our standard jcoverage technologies and introduces more rigour and finer granularity to your testing, allowing you to simulate and test for scenarios that otherwise would be impossible to test automatically.

Enterprise Java Community: The Power of JAAS: Security System Alternatives

Enterprise Java Community: The Power of JAAS: Security System Alternatives

Purpose

I attended the CIO Forum a several months ago and sat in on a presentation on Identity Management, which is considered by C-level executives one of the hot technologies. From a C-level executive’s perspective, this presentation falls generally under the domain of Identity Management. At the Forum, the speaker briefly discussed RBAC (Role Base Access Control) and anecdotally mentioned that it is a “hard nut to crack.”

This article is an extension of a recent article I published on TheServerSide.com, Exploring J2EE Security for Applications using LDAP. That article identified key interfaces within a J2EE compliant application server that need to be configured in order to build secure applications focusing on RBAC, which is an integral part of Identity Management.

However, the article did not discuss, in detail, alternatives to using LDAP directly for Java Authentication and Authorization Service (JAAS) security, such as a Trust Association, one of the more popular system alternatives. Essentially, the power of JAAS is in its ability to use almost any underlying security system. One of those approaches is to use a Trust Association Interceptor (TAI) instead of direct LDAP access.

Eclipse BIRT Home

Eclipse BIRT Home: "BIRT is an open source, Eclipse-based reporting system that integrates with your application to produce compelling reports for both web and PDF.

BIRT provides core reporting features such as report layout, data access and scripting. The current released version is 1.0.1. Please try BIRT and tell us what you think by filling bugs reports & enhancement requests through Bugzilla as explained on the community page."

Saturday, January 07, 2006

aisland: Home

aisland: Home: "AIsland's goal is to provide a framework to build and distribute agents.

The framework exposes objects (graphic module, audio module, neural network, fuzzy logic ...)
to an agent developer, who can glue these modules together using a scripting language, initally JavaScript.

Mobile Agents travel between different AIslands. If an Agent requests a module unknown to an AIsland,
the platform will ask the user for permission to load code from another peer. AIslands can persist trust relationships.

The inital version builds on Java and fat clients, facilitating a Java Swing GUI and a BSF/ Rhino engine,
to script against modules sitting on an JMX component bus hosted by an Avalon based micro kernel.

A port to small devices (J2ME - Java phones) is a future option.

An Agent is represented by an XML document and is distributed as a JXTA Codat.
Agents contain script code, which is interpreted by an AIsland (a JXTA peer) in a secure manner.
Host file systems are protected against malicious agents.

Agents and AIslands communicate using JXTA.
Network access through proxies for HTTP (SOAP) and SMTP is supported as well."

Hive

Hive: "Hive is a Java software platform for creating distributed applications. Using Hive, programmers can easily create systems that connect and use data from all over the Internet. At its heart, Hive is an environment for distributed agents to live, communicating and moving to fulfill applications. We are trying to make the Internet alive."

AJANTA: Home Page

AJANTA: Home Page: "A software agent is a program that works on behalf of a human user. A mobile agent has the added ability to travel autonomously (under its own control) from machine to machine on a network. Ajanta is a mobile agent programming system being developed at the University of Minnesota. It allows agents written in Java to securely migrate from machine to machine on the Internet. The Ajanta project is aimed at building an infrastructure for mobile agent execution that incorporates security and robustness features as an integral part of the design. The system is being implemented using Java."

An introduction to agents

An introduction to agents: "Summary
Agents draw on and integrate many diverse disciplines of computer science, and although agent technology has not yet hit prime time, it is gathering its share of investment money. Find out what all the uproar is about in this month's column, which examines agents -- what they are and what problems they solve. Columnist Todd Sundsted also shows you how to lay the foundation for a simple agent architecture in Java, which you'll develop in upcoming installments of How-To Java. (2,200 words)"

Wednesday, January 04, 2006

MindTunnel - A java implementation of an SSHD

MindTunnel - A java implementation of an SSHD: "MindTunnel v0.96

MindTunnel, release 0.96 - Dec 06, 1998

MindTunnel is an entirely FREE(*) SSH (currently v1.5) server program
written in pure Java. It was implemented for fun (or for completeness
of the mindbright ssh-package :-) and is not intended to be a
replacement for 'the real thing'. However, it can be used as a minimal
sshd, supporting only tunneling (i.e. port-forwarding). It has
RSA-authentication as the only means of authentication, the
'authorized_keys' file has changed to be handled in a central place

for all users (hence you don't need to give the users shell-accounts
on the server-machine).

(*) Only restriction is that you can't derive commercial work from it
without our written permission."

JTOpen - Java Access Classes for iSeries

SourceForge.net:: "The IBM Toolbox for Java / JTOpen is a library of Java classes supporting the client/server and internet programming models to an iSeries or AS/400 server."

Monday, January 02, 2006

1.3 Proxies mit Java-Pipes

1.3 Proxies mit Java-Pipes: "Proxies mit Java-Pipes"

PipedOutputStream request = new PipedOutputStream(),
out = new PipedOutputStream();
PipedInputStream reply = new PipedInputStream(),
in = new PipedInputStream();
in.connect(request); out.connect(reply);

peer.out = new ObjectOutputStream(request);
this.out = new ObjectOutputStream(out);
peer.in = new ObjectInputStream(reply);
this.in = new ObjectInputStream(in);

VTSurvey

VTSurvey: "is a web-based tool which enables end users to autonomously create and run online surveys, feedback or registration forms. By providing a forms-based visual editor, the use of VTSurvey requires no programming knowledge or skills in HTML.

VTSurvey's built-in user management system enables it to serve large organizations and facilitates collaborative survey development and administration. For example, at Virginia Tech this software is used to implement survey.vt.edu a web-based service which is currently serving over 3000 Virginia Tech students, faculty and staff with their survey needs. Go and check out the public demo!"

openFJORD online survey tool

openFJORD: "openFJORD is a web-based tool for flexible survey creation based on an editable library of questions or on user produced questions. It provides the online realization of the survey and its evaluation.

View our Project Homepage.

Click here to download the required external libraries, including JBoss 3.0.4.

Click here for a java api documentation.

Click here for a preview of the web-frontend."

Sunday, January 01, 2006

A Java API to read, write and modify Excel spreadsheets

A Java API to read, write and modify Excel spreadsheets: "Java Excel API - A Java API to read, write and modify Excel spreadsheets

This is the home page of Java Excel API - open source Java API which allows Java developers to read Excel spreadsheets and to generate Excel spreadsheets dynamically. In addition, it contains a mechanism which allows java applications to read in a spreadsheet, modify some cells and write out the new spreadsheet.

This API allows non Windows operating systems to run pure Java applications which can both process and deliver Excel spreadsheets. Because it is Java, this API may be invoked from within a servlet, thus giving access to Excel functionality over internet and intranet web applications.

Features

# Reads data from Excel 95, 97, 2000 workbooks
# Reads and writes formulas (Excel 97 and later only)
# Generates spreadsheets in Excel 2000 format
# Supports font, number and date formatting
# Supports shading and colouring of cells
# Modifies existing worksheets
# Supports image creation
# Preserves macros on copy
# Customizable logging"

Phex - What is Phex? / Features

Phex - What is Phex? / Features: "Phex is a file sharing program running on the Gnutella Network. It will run on Windows, Mac OS X, Linux, Solaris, and other operating systems supporting Java 1.4.

* Phex is a FREE of spyware and adware
Phex never containd any kind of spyware, adware or any other kind of bundled software. (Softpedia award)

* Multi-plattform support
Whether you use Windows, MAC OS X, Linux (a gentoo-ebuild is avaible via portage) or Solaris Phex is able to run on them all. All you need is a operation system that offers a Java 1.4 Runtime Environment.

* Multi-source downloads (Swarming)
Often the file you like to download is available on several different hosts. Phex will request different segments of the file from each host in parallel. After successfully downloading a segment Phex will merge it with the other segments of that file. This results in a much higher download speed. If a host is too slow the segment is split during download and given to another host. To make sure you never run out of hosts Phex is able to find new download hosts by itself with the automatic search functionality and features the Download Mesh.
You can choose for each download whether the segments should be chosen according to their availability (rarest first, BitTorrent-Style), their place in the file (earlier segments first, useful for previewing the file) or randomly.

* Advanced configuration options
Phex offers very advanced configuration options. Much more than many other clients can offer. Especially advanced user can configure Phex according to their needs and are able to tune and see the effect of different settings.

* Passive searching and snooping for files
With the passive search functionality Phex is able to constantly monitor the traffic that goes through the network and collect search results that match your passive search term. Also Phex snoops the traffic for new download candidates you need to finish your downloads faster. This type of searching is also useful for longtime monitoring of available files on the network.

* Other features include:
o Multiple searches.
o Ultrapeer and compression technology for reduced bandwidth.
o Integrated chat.
o Browse host support.
o Bitzi metadata lookup.
o MAGMA support.

Last Updated ( Wednesday, 23 November 2005 )"

JavaThrottle, a pipe bandwidth limiter

JavaThrottle, a pipe bandwidth limiter: "JavaThrottle is a pipe bandwidth limiting throttle, with a gui to change the throttle on the fly.

(0.6 shown here)
Features

* Works via standard pipes.
* Changing settings never interrupts the stream.
* Shows the number of bytes sent and the current rate.
* Shows a graph of traffic flow through the window (--graph).
* Gives the ability to set the throttle to whatever you like whenever you like.
* Includes a good set of command line flags so you can start it in whatever mode you like.
* Throttle tries to be as smooth as possible at slow speeds and as efficient as possible at high speeds.
* Tested on streams in excess of 100GB and spanning many days."

yawiki

yawiki: "'''yawiki''' - yet another wiki

A wiki system is a perfect place for working together and sharing information.
The text syntax of a wiki system is really simple to learn. Getting started with
a wiki system is easy.

This is yet another Java implementation of such a wiki system. Besides the basic wiki features, it covers quite a lot more.

Here is a list of yawiki's basic features:

* versioning of every page
* view the history and restore old versions
* page can be restricted to be edited by users only
* supports different themes
* search engine (jakarta lucene) integrated
* compare different versions of a page
* list last recent updates"

Wednesday, December 28, 2005

xdelta implemented in java

xdelta implemented in java: "This library implements Josh MacDonalds xdelta binary diff algorithm in java. More information on this algorithm can be found here.

Included is some java code for finding primes copyrighted by Roedy Green. See separate copyright note for that code.

This implementation uses the GDIFF file format for storing binary deltas. There is also a patcher that takes a source file and a patch file in this format and produces the original file.

Some links to other delta / diff implementations (some in java).

* libXDiff implements basic yet complete functionalities to create file diffs for binary and text files.
* jrcs, both an rcs implementation and difference engine in java.
* GNU diff ported to java.
* BDiff, a binary diff tool implemented in C. It uses an LZ77-like algorithm which uses the old file as dictionary.
* XML diff and merge tools, from IBM AlphaWorks
* not a java tool, but the google directory's page on File Comparison."

jConfig

jConfig: "jConfig

jConfig is an extremely helpful utility, arming the developer with a simple API for the management of properties. Parts of the implementation are based on the idea that Properties, from Java's perspective, are a good thing, but can be better. jConfig employs the use of XML files for storing and retrieving of property information. The information can be stuffed into nice categories, which makes management quite a bit simpler. The ability to load from a URL is also a nice feature. It allows for a central repository where multiple instances of jConfig can read a single file. The nifty ability to
switch between XML and Properties files isn't fully exploited yet, but will be coming soon. That will mean that the developer would take their existing Properties files and export them to XML. That means less time to get up and get going with jConfig.

With jConfig we hope to have provided the developer with another powerful accessory for his or her's toolbox."

Thursday, December 22, 2005

Enterprise Java Community: SSO and Identity Management

Enterprise Java Community: SSO and Identity Management: "The Solutions
JAAS (Java Authentication and Authorization Services)
Open-Source Solutions

* JOSSO, or Java Open Single Sign-On, is an open source J2EE-based SSO infrastructure aimed to provide a solution for centralized platform neutral user authentication. JOSSO works much like JAAS bug provides a communication layer that can query a centralized server which then plugs into an LDAP server using the supplied LDIF. Customized authentication interfaces may be coded.
* CAS, or central authentication service is an authentication service developed by Yale University that uses an HTTP to a centralized proxy server for authentication. Once a successful authentication occurs, the user is then assigned a ticket that can be validated by the client web-application. The centralized server can be configured using an interface system to support a pluggable authentication into existing user stores.
* The Java Authentication and Authorization Service (JAAS) is a set of APIs that enable services to authenticate and enforce access controls upon users. It implements a Java technology version of the standard Pluggable Authentication Module (PAM) framework, and supports user-based authorization JAAS works by programming to an authentication or authorization interface system that is standardized by the Java security API. So long as pluggable interfaces are kept complete, this approach can be used to plug into just about any username and password authentication system.

Commercial Solutions

* IDX is an application security framework that handles authentication and authorization for your web-applications. With IDX you can quickly integrate web-applications into a single security architecture that supports single sign-on and centralized identity management. The application is divided into two parts: the administration console is a clean and powerful web-interface to manage directories, users and their security rights. The integration API provides a platform neutral way to integrate web-applications into a single security architecture. With the integration API, applications can quickly access user information or perform security checks.
* Siteminder is an application server that provides SSO, a centralized security policy server, enterprise manageability, federated identity support that is open and easily extensible."

OSUser - OSUser

OSUser - OSUser: "OSUser is a module of the OpenSymphony framework designed to provide a simple to use API for user-management. This API provides the access to the following functions:

*

Credentials
The process of verifying that the user is whom they say they are.
*

Access Control
Determining whether a user is allowed to perform a certain task.
*

Profile
Personal details and data associated with the user.
*

Management
Allowing the underlying data to be modified."

Java date and time API - Home - Joda Time

Java date and time API - Home - Joda Time: "Joda Time - Java date and time API

Joda-Time provides a quality replacement for the Java date and time classes. The design allows for multiple calendar systems, while still providing a simple API. The 'default' calendar is the ISO8601 standard which is used by XML. The Gregorian, Julian, Buddhist, Coptic and Ethiopic systems are also included, and we welcome further additions. Supporting classes include time zone, duration, format and parsing."

Tuesday, December 20, 2005

CruiseControl Home

CruiseControl Home: "CruiseControl

CruiseControl is a framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds.

CruiseControl is distributed under a BSD-style license and is free for use. CruiseControl adheres to an open source model and therefore makes the source code freely available.

CruiseControl is maintained and developed by a group of dedicated volunteers."

H2 Documentation

H2 Documentation

Welcome to H2

Welcome to H2, the free SQL database. The main feature of H2 are:

* It is free to use for everybody, source code is included
* Written in Java, but also available as native executable
* JDBC and (partial) ODBC API
* Embedded and client/server modes
* Clustering is supported
* A web client is included

Sunday, December 18, 2005

EJB CMP compound primary key class remarks

Core Developers Network: "The CMP Entity must declare cmp-fields with the same name as each of the fields in the primary key class:


OrderStatus
...
OrderStatusPK

orderId


statusDate

...



It must also declare appropriate accessors:"

Sunday, December 11, 2005

Saturday, December 10, 2005

Quartz - Quartz Overview

Quartz - Quartz Overview: "What is Quartz?

Quartz is a full-featured, open source job scheduling system that can be integrated with, or used along side virtually any J2EE or J2SE application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components or EJBs. The Quartz Scheduler includes many enterprise-class features, such as JTA transactions and clustering.

Quartz is freely usable, licensed under the Apache 2.0 license."

Wednesday, December 07, 2005

SNMP4J - Free Open Source SNMP API for Java

SNMP4J - Free Open Source SNMP API for Java: "Welcome to SNMP4J - The Object Oriented SNMP (Agent) API for Java

This site is dedicated to the development of a free open source state-of-the-art SNMP implementation for Java™ 2SE 1.4 or later. SNMP4J supports command generation (managers) as well as command responding (agents). Its clean object oriented design is inspired by SNMP , which is a well-known SNMPv1/v2c/v3 API for C (see http://www.agentpp.com).

The SNMP4J Java SNMP API provides the following features:

* SNMPv3 with MD5 and SHA authentication and DES and AES 128, AES 192, and AES 256 privacy.
* Pluggable Message Processing Models with implementations for MPv1, MPv2c, and MPv3
* All PDU types.
* Pluggable transport mappings. UDP and TCP are supported out-of-the-box.
* Pluggable timeout model.
* Synchronous and asynchronous requests.
* Command generator as well as command responder support.
* Free open source with the Apache license model
* Java™ 1.4.1 or later
* Logging based on Log4J
* Row-based efficient asynchronous table retrieval with GETBULK.
* Multi-threading support.
* JUnit tests (will be available soon)"

truezip:

truezip:

Although the ZIP file format it is a proprietary, de-facto standard by PKWARE Inc. (see http://www.pkware.com/company/standards/appnote/appnote.txt), ZIP files are ubiquitous on the Internet and thus on many platforms today. The J2SE API provides a well known package java.util.zip with classes like ZipInputStream, ZipOutputStream and ZipFile for easy access to ZIP compatible files. However, this package has some limitations/disadvantages:

* Sun's implementation uses the character set UTF-8 (eight bit Unicode character set) for entry names and comments instead of CP437 (the genuine IBM-PC character set) as used by the de-facto standard PKZIP from PKWARE. As a result, you cannot read or write ZIP files with international entry file names such as "täscht.txt" in a ZIP file created by a (southern) German.
* You need to use an additional API (the package java.util.zip) if your application needs to support ZIP compatible files in addition to ordinary files and directories, thereby significantly inflating your code and adding unnecessary complexity (which adds bugs, bugs, and even more bugs).
* You can either read or completely write ZIP compatible files, but you cannot just update individual entries.
* The classes do not support the concept of a directory, which you may want to create, modify, list or delete.
* You cannot browse a ZIP compatible file with a JFileChooser or FileSystemView.

The TrueZIP Library has been developed to overcome these limitations/disadvantages.

(If you would like to see TrueZIP in action, please visit http://truemirror.schlichtherle.de/en/ and web start the TrueMirror application.)

Tuesday, December 06, 2005

Open Source CMS - Alfresco News

Alfresco News: "Alfresco Enterprise Content Management 1.1 Released

Dec 5, 2005
An open source enterprise content management system

Improvements and additions in this 1.1 release focus on adding the security and permissions framework to the open version, first phase of JCR-170 Level 2 support and adding Groups support and management to the Enterprise version. A large number of bug fixes and enhancements also present in this release.

Alfresco provides a repository as well as an application to manage the repository, and has been designed for developing portal content, or replacing uncontrolled shared drives.

Alfresco has been implemented with open source projects such as Spring, Hibernate, and Lucene. It is also a Java Content Repository level 1 implementation with the first phase of level 2 available in this release, and provides the following features:"


* Library Services (Check-in/out, versioning)
* Smart Spaces (Rules and Conditions)
* Desktop File Access (CIFS, FTP)
* Auditable Content
* Workflow
* Content Categorization
* Data Management and Transformation Engine e.g. Word to PDF
* Content Streaming
* Advanced Search (Lucene full-text, Meta-Data and Custom Meta-Data, Content, Location and Category Search)
* Administration
* Advanced Security
* Virtual File System making ECM as simple as a Z: drive
* Team Collaboration
* Automatic Meta-Data Extraction
* Document and Folder templating and dashboards

Friday, December 02, 2005

RRD TOOL -- RRDJTool

RRD TOOL -- RRDJTool: "Round Robin Database Java Tool
by Sasa Markovic

RRDJTool is a small set of Java wrapper classes for RRDTool. This class set performs direct RRDTool calls using Java native interface (JNI) technology. Currently, it's tested on Linux platform only and supports the following frequently used RRD commands:

* rrdcreate
* rrdupdate
* rrdgraph
* rrdlast
* rrdfetch

JNI adds a bit of complexity to your Java based RRDTool projects but without JNI, you are forced to access RRDs using very slow and inefficient system calls. With RRDJTool it is possible to access RRDs using simple, fast and straightforward Java calls implemented through native methods."

JRobin :: RRDTool Choice for the Java World :: Welcome to JRobin

JRobin :: RRDTool Choice for the Java World :: Welcome to JRobin: "First time here?

JRobin is a 100% pure java implementation of RRDTool's functionality. It follows the same logic and uses the same data sources, archive types and definitions as RRDTool does. JRobin supports all standard operations on Round Robin Database (RRD) files: CREATE, UPDATE, FETCH, LAST, DUMP, XPORT and GRAPH. JRobin's API is made for those who are familiar with RRDTool's concepts and logic, but prefer to work with pure java. If you provide the same data to RRDTool and JRobin, you will get exactly the same results and graphs. JRobin is made from the scratch and it uses very limited portions of RRDTool's original source code. JRobin does not use native functions and libraries, has no Runtime.exec() calls and does not require RRDTool to be present. JRobin is distributed as a software library (jar files) and comes with full java source code (LGPL licence)."