﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-搜索引擎-文章分类-编程</title><link>http://www.cnitblog.com/damon/category/6431.html</link><description>Java, Web, Searching Engine
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 13:39:48 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 13:39:48 GMT</pubDate><ttl>60</ttl><item><title>Tools for Natural Language Processing</title><link>http://www.cnitblog.com/damon/articles/39413.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Mon, 28 Jan 2008 09:52:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/39413.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/39413.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/39413.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/39413.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/39413.html</trackback:ping><description><![CDATA[<dl><dt><a onclick="javascript:urchinTracker ('/outgoing/en.wikipedia.org/wiki/text_simplification');" href="http://en.wikipedia.org/wiki/Text_simplification">Text simplification - Wikipedia, the free encyclopedia</a> </dt><dd>Text simplification is an operation used in natural language
processing to modify, enhance, classify or otherwise process an
existing corpus of human-readable text in such a way that the grammar
and structure of the prose is greatly simplified, while the underlying
meaning and information remains the same. Text simplification is an
important area of research, because natural human languages ordinarily
contain complex compound constructions that are not easily processed
through automation. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/copt');" href="http://sourceforge.net/projects/copt">CoPT, Corpus Processing Tools</a> </dt><dd>CoPT, Corpus Processing Tools, is a set of java classes intended to
assist field linguists, NLP researchers and developers, students and
software developers in all corpus-related processing. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/jazzy.sourceforge.net');" href="http://jazzy.sourceforge.net/">Jazzy - Java spell checker API </a> </dt><dd>Jazzy is a Java spell checker based on the algorithms used by aspell. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/jlinkgrammar');" href="http://sourceforge.net/projects/jlinkgrammar">JLinkGrammarParser</a> </dt><dd>JLinkGrammarParser is a Java port of the CMU link grammar parser, a syntactic parser for english. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/developer.gauner.org/jspellcorrect/');" href="http://developer.gauner.org/jspellcorrect/">jSpellCorrect</a> </dt><dd>It&#8217;s a simple statistical spelling corrector. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.andy-roberts.net/software/jtokeniser/');" href="http://www.andy-roberts.net/software/jTokeniser/"> jTokeniser </a> </dt><dd>jTokeniser is a Java library for tokenising strings into a list of
tokens. A variety of possible tokenisers are available, including a
very basic whitespace tokeniser, a more flexible StringTokeniser, a
couple of regular expression tokenisers, and a tokeniser that utilises
Java&#8217;s BreakIterator, which provides more complex, locale dependant
tokenisation. More recently, a tokeniser that add breaks text into its
constituent sentences. All are very simple to use. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/ltc.sourceforge.net/');" href="http://ltc.sourceforge.net/">Linguistic Tree Constructor</a> </dt><dd>LTC is a free program for building linguistic syntax trees from text.<br>
It lets the user build the tree in a point-and-click fashion.<br>
The program does no analysis on its own — the user is completely free
to draw the tree however he or she wishes. However, the program makes
sure that the tree is a tree and not some other kind of graph. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/miinlptoolkit');" href="http://sourceforge.net/projects/miinlptoolkit">MII Medical NLP Toolkit</a> </dt><dd>This is a toolkit for medical natural language processing (NLP).
The core engine is general enough to be used in a variety of text
processing domains, though the toolkit includes specific support for
medical reports and patient de-identification. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/nlpfarm');" href="http://sourceforge.net/projects/nlpfarm">nlpFarm</a> </dt><dd>The nlpFarm is a Natural Language Processing (NLP) resource where
early research prototypes (Java) can evolve into robust and useful open
source. Our farmstead collaborates under the OpenNLP initiative, in
order to make NLP software publically available. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/opennlp');" href="http://sourceforge.net/projects/opennlp">OpenNLP</a> </dt><dd>OpenNLP provides the organizational structure for coordinating
several different projects which approach some aspect of Natural
Language Processing. OpenNLP also defines a set of Java interfaces and
implements some basic infrastructure for NLP components </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/one');" href="http://sourceforge.net/projects/one">Open source natural language tools</a> </dt><dd>Toolkit for implementing question answering systems and machine
translation in both controlled languages and natural languages.
Includes first order logic inference, parsing and semantic analysis,
and APIs and standalone server software. Currently some t </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/grok');" href="http://sourceforge.net/projects/grok">The OpenNLP Grok Library</a> </dt><dd>Grok is a library of natural language processing components,
including support for parsing with categorial grammars and various
preprocessing tasks such as part-of-speech tagging, sentence detection,
and tokenization. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/leonlp');" href="http://sourceforge.net/projects/leonlp">The OpenNLP Leo Project</a> </dt><dd>Leo is a project to provide an architecture for defining XML
specifications of grammars for different natural language parsing
systems and tools for using that architecture to permit sharing of
grammar resources across different systems. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/maxent');" href="http://sourceforge.net/projects/maxent">The OpenNLP Maximum Entropy Package</a> </dt><dd>Maximum entropy is a powerful method for constructing statistical
models of classification tasks, such as part of speech tagging in
Natural Language Processing. Several example applications using maxent
can be found in the OpenNLP Grok Library. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.visuwords.com/download.php');" href="http://www.visuwords.com/download.php">Visuwords&#8482; online graphical dictionary - download source code</a> </dt><dd>Download the source code for Visuwords. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/balie');" href="http://sourceforge.net/projects/balie">Balie</a> </dt><dd>Extraction from Text with Machine Learning and Natural Language Techniques </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.geocities.com/square17320509/ferft/ad/ferftad.htm');" href="http://www.geocities.com/square17320509/ferft/ad/ferftad.htm">FerFT: Spectral Analyzer</a> </dt><dd>This software is for multi-purpose power spectral analyzer based on
the successive Fourier transformation method. (&#174; UTD) It has been
developed with Java (ver.1.5) and works on any OS implemented Java
ver.1.5 or later. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/freshmeat.net/projects/julius-lvcsr/?branch_id="66663&release_id=237917');"" href="http://freshmeat.net/projects/julius-lvcsr/?branch_id=66663&amp;release_id=237917">Julius Speech Recognition Engine</a> </dt><dd>Julius Speech recognition engine </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/marf/');" href="http://sourceforge.net/projects/marf/">Modular Audio Recognition Framework</a> </dt><dd>MARF is a general cross-platform framework with a collection of
algorithms for audio (voice, speech, and sound) and natural language
text analysis and recognition along with sample applications
(identification, NLP, etc.) of its use, implemented in Java. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/freshmeat.net/releases/237913/');" href="http://freshmeat.net/releases/237913/">VoxForge 0.0.1</a> </dt><dd>Speech recognition support </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/openccg.sourceforge.net/');" href="http://openccg.sourceforge.net/">OpenCCG: The OpenNLP CCG Library</a> </dt><dd>OpenCCG, the OpenNLP CCG Library, is an open source natural
language processing library written in Java, which provides parsing and
realization services based on Mark Steedman&#8217;s Combinatory Categorial
Grammar (CCG) formalism. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/freshmeat.net/projects/joone/?branch_id="40600&release_id=245409');"" href="http://freshmeat.net/projects/joone/?branch_id=40600&amp;release_id=245409">Joone</a> </dt><dd>Joone (Java Object Oriented Neural Engine) is an artificial neural
network Java framework. It is used to build and train neural networks
with a powerful visual environment. It has a modular design and can be
easily extended by writing new modules to implement new learning
algorithms or architectures.</dd></dl>
<br><img src ="http://www.cnitblog.com/damon/aggbug/39413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2008-01-28 17:52 <a href="http://www.cnitblog.com/damon/articles/39413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tools for Robotics</title><link>http://www.cnitblog.com/damon/articles/39414.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Mon, 28 Jan 2008 09:52:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/39414.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/39414.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/39414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/39414.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/39414.html</trackback:ping><description><![CDATA[<dl><dt><a onclick="javascript:urchinTracker ('/outgoing/claraty.jpl.nasa.gov/man/software/index.php');" href="http://claraty.jpl.nasa.gov/man/software/index.php">CLARAty Software</a> </dt><dd>This site contains information about the CLARAty reusable robotic
software framework, videos of the capabilities that were demonstrated
on real and simulated robotic platforms, and information on how to
download and run the software. CLARAty stands for Coupled-Layer
Architecture for Robotic Autonomy. It is a collaborative effort among
four institutions: Jet Propulsion Laboratory, NASA Ames Research
Center, Carnegie Mellon, and the University of Minnesota. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/jhomenet.sourceforge.net/index.html');" href="http://jhomenet.sourceforge.net/index.html">jHomeNet :: Java Home Automation</a> </dt><dd>jHomeNet is a home automation application written primarily in Java
used to monitor and control sensors and devices around your house. The
application uses of a number of existing communication technologies
including Dallas Semiconductor&#8217;s 1-Wire and X-10 protocols.
Administration and control of the software is through a GUI written
entirely using the Swing development tools but makes use of a number of
third party libraries. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sluggish.uni.cc/sentience/sentience.htm');" href="http://sluggish.uni.cc/sentience/sentience.htm">C# machine vision</a> </dt><dd>Sentience is a stereoscopic vision and mapping system for mobile
robots. It was developed initially as part of the Rodney humanoid robot
project, and has been refined over several years. The system uses cheap
low resolution webcam technology to acquire images and calculate a
depth map from them. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.cs.duke.edu/~parr/dpslam/');" href="http://www.cs.duke.edu/%7Eparr/dpslam/">DP-SLAM robot vision</a> </dt><dd>Welcome to the DP-SLAM web page. DP-SLAM aims to achieve truly
simultaneous localization and mapping without landmarks. While DP-SLAM
is compatible with techniques that correct maps when a loop is closed,
we have found that DP-SLAM is accurate enough that no special loop
closing techniques are required in most cases. DP-SLAM makes only a
single pass over the sensor data. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/javavis');" href="http://sourceforge.net/projects/javavis">javavis</a> </dt><dd>A Computer Vision Library in Java </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/neatvision.eeng.dcu.ie/formats.html');" href="http://neatvision.eeng.dcu.ie/formats.html">NeatVision</a> </dt><dd>NeatVision is a free Java based image analysis and software
development environment, which provides high level access to a wide
range of image processing algorithms through well defined and easy to
use graphical interface. NeatVision is in its second major release. New
features include: A full developers guide with method listings and
programme examples, DICOM and Analyze medical image sequence viewers,
URL control, feature fitting, supervised and unsupervised colour
clustering, DCT, Improved FFT, 3D volume processing and surface
rendering. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.orocos.org/');" href="http://www.orocos.org/">Orocos</a> </dt><dd>Open Robot Control Software project. The project&#8217;s aim is to
develop a general-purpose, free software, and modular framework for
robotand machine control. The Orocos project supports 4 C++ libraries:
the Real-Time Toolkit, the Kinematics and Dynamics Library, the
Bayesian Filtering Library and the Orocos Component Library. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sonia.etsmtl.ca/en/');" href="http://sonia.etsmtl.ca/en/">S.O.N.I.A. - Syst&#232;me d&#8217;Op&#233;ration Nautique Intelligent et Autonome</a> </dt><dd>Student club of Ecole de Technologie Superieure who build an autonomous submarine for the AUVSI competition. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.orocos.org/');" href="http://www.orocos.org/">The Orocos Project | Smarter control in robotics &amp; automation!</a> </dt><dd>Home for C++ libraries for advanced machine and robot control.</dd></dl>
<br><img src ="http://www.cnitblog.com/damon/aggbug/39414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2008-01-28 17:52 <a href="http://www.cnitblog.com/damon/articles/39414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Development Tools</title><link>http://www.cnitblog.com/damon/articles/39410.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Mon, 28 Jan 2008 09:48:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/39410.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/39410.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/39410.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/39410.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/39410.html</trackback:ping><description><![CDATA[<a onclick="javascript:urchinTracker ('/outgoing/maven.apache.org/');" href="http://maven.apache.org/">Apache Maven</a><dl><dt> <br></dt><dd>Maven is a software project management and comprehension tool.
Based on the concept of a project object model (POM), Maven can manage
a project&#8217;s build, reporting and documentation from a central piece of
information. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/beanlet.org/');" href="http://beanlet.org/">Beanlet - JSE Application Container - Confluence</a> </dt><dd>Inspired by EJB3 and Spring, Beanlet delivers an IoC enabled
application container offering the best of both worlds. Beanlet&#8217;s
programming model looks similar to that of EJB3, but its flexibility is
comparable to that of Spring. The Beanlet architecture supports JTA
transactions, the Java Persistence API, JNDI, Web integration, and last
but not least, the Spring Framework. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.beanshell.org/');" href="http://www.beanshell.org/">Bean Shell</a> </dt><dd>BeanShell is a small, free, embeddable Java source interpreter with
object scripting language features, written in Java. BeanShell
dynamically executes standard Java syntax and extends it with common
scripting conveniences such as loose types, commands, and method
closures like those in Perl and JavaScript. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/freshmeat.net/releases/237885/');" href="http://freshmeat.net/releases/237885/">cdrtools 2.01.01a17 (Development)</a> </dt><dd>About: cdrtools (formerly cdrecord) creates home-burned CDs/DVDs
with a CDR/CDRW/DVD recorder. It works as a burn engine for several
applications. It supports CD/DVD recorders from many different vendors;
all SCSI-3/mmc- and ATAPI/mmc-compliant drives should also work.
Supported features include IDE/ATAPI, parallel port, and SCSI drives,
audio CDs, data CDs, and mixed CDs, full multi-session support, CDRWs
(rewritable), DVD-R/-RW, DVD+R/+RW, TAO, DAO, RAW, and human-readable
error messages. cdrtools includes remote SCSI support and can access
local or remote CD/DVD writers. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.coadunation.net/index.php');" href="http://www.coadunation.net/index.php">Coadunation daemon server</a> </dt><dd>Coadunation open source daemon server </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/crossroads.e-tunity.com/');" href="http://crossroads.e-tunity.com/">Crossroads load balancer</a> </dt><dd>Crossroads is an open source load balance and fail over utility for
TCP based services. It is a daemon running in user space, and features
extensive configurability, polling of back ends using &#8216;wakeup calls&#8217;,
detailed status reporting, &#8216;hooks&#8217; for special actions when backend
calls fail, and much more. Crossroads is service-independent: it is
usable for HTTP(S), SSH, SMTP, DNS, etc.. In the case of HTTP
balancing, Crossroads can provide &#8217;session stickiness&#8217; for back end
processes that need sessions, but aren&#8217;t session-aware of other back
ends. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.freedesktop.org/wiki/software/dbus');" href="http://www.freedesktop.org/wiki/Software/dbus">freedesktop.org - Software/dbus</a> </dt><dd>D-Bus is a message bus system, a simple way for applications to
talk to one another. In addition to interprocess communication, D-Bus
helps coordinate process lifecycle; it makes it simple and reliable to
code a &#8220;single instance&#8221; application or daemon, and to launch
applications and daemons on demand when their services are needed. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.freenas.org/');" href="http://www.freenas.org/">FreeNAS: The Free NAS Server - Home</a> </dt><dd>Free NAS Server </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.tagtraum.com/gcviewer.html');" href="http://www.tagtraum.com/gcviewer.html">GCViewer</a> </dt><dd>GCViewer is a free open source tool to visualize data produced by
the Java VM options -verbose:gc and -Xloggc:&lt;file&gt;. It also
calculates garbage collection related performance metrics (throughput,
accumulated pauses, longest pause, etc.). This can be very useful when
tuning the garbage collection of a particular application by changing
generation sizes or setting the initial heap size. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.gridgain.com/');" href="http://www.gridgain.com/">GridGain - Open Source Grid Computing For Java</a> </dt><dd>GridGain Systems provides professional services around our open
source Java grid computing framework. We provide enterprise level
support, in-depth training and consulting helping our clients to get
the most out of our product during initial evaluation, development and
production use. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/lucene.apache.org/hadoop/');" href="http://lucene.apache.org/hadoop/">Hadoop Map/Reduce framework</a> </dt><dd>Hadoop implements MapReduce, using the Hadoop Distributed File
SystemHDFS) (see figure below.) MapReduce divides applications into
many small blocks of work. HDFS creates multiple replicas of data
blocks for reliability, placing them on compute nodes around the
cluster. MapReduce can then process the data where it is located. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.jppf.org/index.php');" href="http://www.jppf.org/index.php">Java Parallel Processing Framework</a> </dt><dd>An open-source, Java-based, framework for parallel computing. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.softframeworks.com/products/products.php?cid="11');"" href="http://www.softframeworks.com/products/products.php?cid=11">Java Print Dialog Framework</a> </dt><dd>The JPDF provides preview and print capabilities<br>
to Java applications.  Swing components — like JTable and JTextPane — can be<br>
previewed and printed.  Forms and reports can be composed and printed.<br>
A large variety of Page Setup, Preview, and Print dialogs is provided. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/javasvnupdater/');" href="http://sourceforge.net/projects/javasvnupdater/">javaSVNUpdater</a> </dt><dd>javaSVNUpdater is a Java library that allows an application to
update or patch itself automatically. The versioning information about
the application needs to be stored in a subversion archive, and
committing to the archive effects the distribution of new versions. It
includes an updater wizard and an executor to spawn a separate process
for proceeding with updates. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.cs.queensu.ca/home/dalamb/java/units/');" href="http://www.cs.queensu.ca/home/dalamb/java/units/">Java Units of Measure </a> </dt><dd>This is a Java package with abstract data types for measurable
quantities (like volume and speed) and units for measuring them (like
liters and furlongs per fortnight). You may convert from one set of
units to another, and may add your own quantities and units. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/jgcs.sourceforge.net/');" href="http://jgcs.sourceforge.net/">jGCS</a> </dt><dd>The jGCS library provides a generic interface for Group
Communication. This interface can be used by applications that need
primitives from simple IP Multicast group communication to virtual
synchrony or atomic broadcast. Its a common interface to several
existing toolkits that provide different APIs. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.jgroups.org/javagroupsnew/docs/index.html');" href="http://www.jgroups.org/javagroupsnew/docs/index.html">JGroups (JBoss cluster comm)</a> </dt><dd>A Toolkit for Reliable Multicast Communication </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/joda-time.sourceforge.net/');" href="http://joda-time.sourceforge.net/">Joda Time - Java date and time API</a> </dt><dd>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 &#8216;default&#8217; calendar is the ISO8601 standard
which is used by XML. The Gregorian, Julian, Buddhist, Coptic, Ethiopic
and Islamic systems are also included, and we welcome further
additions. Supporting classes include time zone, duration, format and
parsing. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.tecnick.com/public/code/cp_dpage.php?aiocp_dp="junitconv');"" href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=junitconv">JUnitConv</a> </dt><dd>JUnitConv is a free Open Source universal Units of Measure Converter, it converts numbers from one unit of measure to another.<br>
Built as a Java Applet, JUnitConv is platform-independent and
highly-configurable, it supports an unlimited number of Units
Categories, Units of Measure and Multiplier Prefixes that could be
customized using external text files. You could setup your own data
files using your preferred spoken language, units categories, units
definitions and multiplier prefixes. The default configuration data
files contains 580 basic units of measure definitions divided in 31
categories and 27 multiplier prefixes for a total of 15660 composed
units. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/tanesha.net/wiki/fooftpd.html');" href="http://tanesha.net/Wiki/FooFtpd.html">libreplacer</a> </dt><dd>libreplacer is an easy-to-use string formatting library for Java,
which provides some C-sprintf alike syntax, and can be easily extended
for all kinds of object to string formattings. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/lobobrowser.org/java-browser.jsp');" href="http://lobobrowser.org/java-browser.jsp">Lobo: Java Web Browser</a> </dt><dd>Lobo is an open source pure Java web browser with support for HTML 4, Javascript and CSS2. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/mozillaparser.sourceforge.net/index.html');" href="http://mozillaparser.sourceforge.net/index.html">Mozilla Java Html Parser</a> </dt><dd>Mozilla Java Html Parser is a Java package that enables you to
parse html pages into a Java Document object. The parser is a wrapper
around Mozilla&#8217;s Html Parser , thus giving the user a browser-quality
html parser. </dd>
<p>
</p>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.jenkov.com/mrpersister/introduction.tmpl');" href="http://www.jenkov.com/mrpersister/introduction.tmpl">Mr. Persister</a> </dt><dd>Mr. Persister is a POJO persistence API for Java. The main focus of
Mr. Persister is to handle all the trivial JDBC work, and leave the
non-trivial parts up to you. It uses plain SQL as the query language,
it can auto-map objects to the database, and it can generate SQL for a
lot of trivial tasks by itself (such as insert, update, and delete).
Mr. Persister also has support for easy batch updates of collections of
objects, connection and transaction handling, and many other features. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/mubench.sourceforge.net/');" href="http://mubench.sourceforge.net/">mubench</a> </dt><dd>mubench is an in-depth, low-level benchmark for x86 processors. Its
primary goal is to provide useful information for people who optimize
assembly code and for people who write compilers. It measures latency
and throughput for each individual instruction (sometimes several forms
of the same instruction), as well as the throughput of arbitrary
instruction mixes. The results produced by mubench are typically an
order of magnitude more detailed than those found in AMD or Intel
manuals. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/code.google.com/p/myrpm/');" href="http://code.google.com/p/myrpm/">myrpm</a> </dt><dd>Myrpm is a set of utilities allowing you to turn easily software
into rpm package. More than a simple set of script, it allow you to
manage large groups of server in a elegant and efficient way. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.ssw.uni-linz.ac.at/research/papers/wuerthinger07master/wuerthinger07master.pdf');" href="http://www.ssw.uni-linz.ac.at/Research/Papers/Wuerthinger07Master/Wuerthinger07Master.pdf">NetBeans HotSpot grapher</a> </dt><dd>Masters Thesis </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/nlink.dev.java.net/');" href="https://nlink.dev.java.net/">nlink: NLink - Native Library Linker</a> </dt><dd>Provides a general-purpose method invocation converter driven by
annotation. With NLink, calling a native library is as easy as follows,
and then the NLink runtime invokes the corresponding method for you </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.primrose.org.uk');" href="http://www.primrose.org.uk/">Primrose </a> </dt><dd>Primrose is a database connection pool which supports all databases
that have JDBC drivers. It provides control over SQL transaction
monitoring, configuration, and dynamic pool management via a Web
interface. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/zutubi.com/products/pulse/');" href="http://zutubi.com/products/pulse/">pulse 1.1.14 </a> </dt><dd>Pulse is an automated build (or continuous integration) server
designed to work with you to ensure the integrity of your code. Pulse
regularly checks your source code out from your SCM, builds your
projects, and notifies you of the results. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/recordmydesktop.sourceforge.net/');" href="http://recordmydesktop.sourceforge.net/">recordMyDesktop</a> </dt><dd>recordMyDesktop is a desktop session recorder for linux that attemps to be easy to use,<br>
yet also effective at it&#8217;s primary task. As such, the program is separated in two parts; a simple<br>
command line tool that performs the basic tasks of capturing and encoding and an interface that<br>
exposes the program functionality in a usable way. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/prevalence.sourceforge.net');" href="http://prevalence.sourceforge.net/">Redstone Prevalent Storage</a> </dt><dd>Redstone Prevalent Storage is minimalistic prevalent storage for
Java SE 5.0 that replaces the need for JDBC and an RDBMS for small and
mid-sized applications. The library is comprised of an intentionally
small set of concise interfaces and classes, and can be suitable for
many types of applications where the data storage does not necessarily
require an RDBMS. The library is heavily influenced by Prevayler and
the Prevayler team (who should receive all credit).</dd></dl>
<p><strong>  <a onclick="javascript:urchinTracker ('/outgoing/openrdf.org/');" href="http://openrdf.org/" title="Sesame">Sesame</a></strong> </p>
<blockquote>
<p>The Sesame 2 RDF store is an open source RDF framework with support for RDF Schema 			inferencing and querying.</p>
</blockquote>
<dl><dt> <a onclick="javascript:urchinTracker ('/outgoing/www.w3.org/tr/2007/cr-rdf-sparql-query-20070614/');" href="http://www.w3.org/TR/2007/CR-rdf-sparql-query-20070614/">SPARQL Query Language for RDF (Specification)</a> </dt><dd>RDF is a directed, labeled graph data format for representing
information in the Web. This specification defines the syntax and
semantics of the SPARQL query language for RDF. SPARQL can be used to
express queries across diverse data sources, whether the data is stored
natively as RDF or viewed as RDF via middleware. SPARQL contains
capabilities for querying required and optional graph patterns along
with their conjunctions and disjunctions. SPARQL also supports
extensible value testing and constraining queries by source RDF graph.
The results of SPARQL queries can be results sets or RDF graphs. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/network.com/');" href="http://network.com/">Sun Grid network.com</a> </dt><dd>Sun Web Tier Solutions </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.khelekore.org/jmp/tijmp/index.shtml');" href="http://www.khelekore.org/jmp/tijmp/index.shtml">TIJmp - Java Memory Profiler - why object not gc&#8217;ed</a> </dt><dd>TIJmp is a memory profiler for java. TIJmp is made for java/6 and
later, it will not work on java/5 systems. If you need a profiler for
java/5 or earlier try the jmp profiler. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.tinymarbles.org');" href="http://www.tinymarbles.org/">Tiny Marbles</a> </dt><dd>Tiny Marbles is a transactional, persistent object repository for
dynamic objects. Apart from the initial setup, all the interaction
between Tiny Marbles and the application is done programatically at
runtime. All objects can be modified after creation. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/yamon.klaki.net/');" href="http://yamon.klaki.net/">Yamon, Yet Another Monitoring script</a> </dt><dd>Yamon is a very simple Perl program designed to check whether a
server is up-and-running and send an alert to a human when something
appears to be broken. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.yourkit.com/index.jsp');" href="http://www.yourkit.com/index.jsp">YourKit Java Profiler 6.0-EAP-build1076 </a> </dt><dd>YourKit Java Profiler is a CPU and memory profiler that makes it
easy to solve wide range of CPU- and memory-related performance
problems. It features automatic leak detection, powerful tools for the
analysis of memory distribution, an object heap browser, comprehensive
memory tests as part of your JUnit testing process, extremely low
profiling overhead, transparent deobfuscation support, and integration
with Eclipse, JBuilder, IntelliJ IDEA, NetBeans, and JDeveloper IDEs. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/ical4j.sourceforge.net');" href="http://ical4j.sourceforge.net/"> iCal4j </a> </dt><dd>iCal4j is a Java API incorporating an iCalendar parser, model, validator, and outputter. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/jakarta.apache.org/poi/index.html');" href="http://jakarta.apache.org/poi/index.html">Jakarta POI - Java API To Access Microsoft Format Files</a> </dt><dd>The POI project consists of APIs for manipulating various file
formats based upon Microsoft&#8217;s OLE 2 Compound Document format using
pure Java. In short, you can read and write MS Excel files using Java.
Soon, you&#8217;ll be able to read and write Word files using Java. POI is
your Java Excel solution as well as your Java Word solution. However,
we have a complete API for porting other OLE 2 Compound Document
formats and welcome others to participate. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/gnujavaplot/');" href="https://sourceforge.net/projects/gnujavaplot/">JavaPlot</a> </dt><dd>Pure Java programming interface library for GNUPlot </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/big.faceless.org/');" href="http://big.faceless.org/">Java Software Components by Big Faceless Organization</a> </dt><dd>Java Software Components from Big Faceless Organization including Report Generator, PDF Library and Graph Library </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.wombat.ie/software/jbdiff/downloads/');" href="http://www.wombat.ie/software/jbdiff/downloads/">JBDiff</a> </dt><dd>JBDiff (Java Binary Diff) utility is a Java port of the C based bsdiff utility by Colin Percival. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/wiki.jboss.org/wiki/wiki.jsp?page="EmbeddedJBoss');"" href="http://wiki.jboss.org/wiki/Wiki.jsp?page=EmbeddedJBoss">JBoss.com - Wiki - EmbeddedJBoss</a> </dt><dd>The Professional Open Source Company </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/labs.jboss.com/portal/jbossrules/');" href="http://labs.jboss.com/portal/jbossrules/">JBoss Rules</a> </dt><dd>JBoss Rules is the supported and branded release of the Drools
project. Drools is an enhanced Rules Engine implementation, ReteOO,
based on Charles Forgy&#8217;s Rete algorithm tailored for the Java language.
More importantly, Drools provides for Declarative Programming and is
flexible enough to match the semantics of your problem domain with
Domain Specific Languages. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/code.google.com/p/jgcalapi/');" href="http://code.google.com/p/jgcalapi/">jgcalapi</a> </dt><dd>JGCalAPI provides an easy to use wrapper for the Google Calendaring
GData API. This wrapper is intended to hide much of the REST ugliness
of the API, thus making it somewhat easier to get started with and to
use. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/jweather.sourceforge.net/');" href="http://jweather.sourceforge.net/"> jweather</a> </dt><dd>jweather is a Java library for parsing raw weather data (e.g.
METAR, TAF). It currently focuses on parsing and providing an API for
access to METAR data. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/projects/ngrease/');" href="http://sourceforge.net/projects/ngrease/">ngrease metalanguage</a> </dt><dd>The world&#8217;s largest development and download repository of Open Source code and applications </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/www.opendatacommons.org/');" href="http://www.opendatacommons.org/">Open Data</a> </dt><dd>The Open Data Commons Public Domain Dedication &amp; Licence is a
document intended to allow you to freely share, modify, and use this
work for any purpose and without any restrictions. This licence is
intended for use on databases or their contents (&#8221;data&#8221;), either
together or individually. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/librdf.org/raptor/');" href="http://librdf.org/raptor/">Raptor RDF Parser Library</a> </dt><dd>Raptor is a free software / Open Source C library that provides a
set of parsers and serializers that generate Resource Description
Framework (RDF) triples by parsing syntaxes or serialize the triples
into a syntax. The supported parsing syntaxes are RDF/XML, N-Triples,
TRiG, Turtle, RSS tag soup including all versions of RSS, Atom 1.0 and
0.3, GRDDL and microformats for HTML, XHTML and XML. The serializing
syntaxes are RDF/XML (regular, and abbreviated), N-Triples, RSS 1.0,
Atom 1.0 and Adobe XMP. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/code.google.com/p/rest-client/');" href="http://code.google.com/p/rest-client/">rest-client - Google Code</a> </dt><dd>RESTClient is a Java platform client application to test RESTful
webservices. It can be used to test variety of HTTP communications. </dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/rifers.org/');" href="http://rifers.org/">RIFE : Continuations</a> </dt><dd>Full-stack open-source component framework to quickly and consistently develop and maintain Java web applications </dd></dl>
<br><img src ="http://www.cnitblog.com/damon/aggbug/39410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2008-01-28 17:48 <a href="http://www.cnitblog.com/damon/articles/39410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Texai softwares</title><link>http://www.cnitblog.com/damon/articles/39408.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Mon, 28 Jan 2008 09:46:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/39408.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/39408.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/39408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/39408.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/39408.html</trackback:ping><description><![CDATA[<dl><dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=246517');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=246517">OpenCyc RDF</a> </dt><dd>This release contains RDF statements extracted from the <a onclick="javascript:urchinTracker ('/outgoing/www.opencyc.org');" href="http://www.opencyc.org/">OpenCyc knowledge base</a>.
It omits objects that are not directly compatible with RDF, namely
non-atomic terms, rules, non-binary relations. Context is only included
in the TriG formatted files.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=246667');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=246667">WordNet 2.1 RDF</a> </dt><dd>This is an extract of the <a onclick="javascript:urchinTracker ('/outgoing/wordnet.princeton.edu');" href="http://wordnet.princeton.edu/">Princeton WordNet version 2.1 lexical knowlege base</a> in RDF format. Only the TriG version contains context.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=246674');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=246674">The CMU Pronouncing Dictionary RDF</a> </dt><dd>This release contains <a onclick="javascript:urchinTracker ('/outgoing/www.speech.cs.cmu.edu/cgi-bin/cmudict');" href="http://www.speech.cs.cmu.edu/cgi-bin/cmudict">The CMU Pronouncing Dictionary</a> converted to RDF. Only the TriG version contains context.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=246932');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=246932">Wiktionary RDF</a> </dt><dd>This release contains the English entries from the <a onclick="javascript:urchinTracker ('/outgoing/en.wiktionary.org/wiki/main_page');" href="http://en.wiktionary.org/wiki/Main_Page">Wiktionary</a>, as of Spring 2007, extracted to RDF. Only the TriG version contains context.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=246391');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=246391">Texai Lexicon RDF</a> </dt><dd>This the Texai lexicon which is a merging of WordNet 2.1, the CMU
Pronouncing Dictionary, Wiktionary, and the OpenCyc lexicon. Only the
TriG version contains context.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=248619');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=248619">RDF Entity Manager</a> </dt><dd>The RDF Entity Manager is the framework for persisting semantically annotated Java classes to the Sesame 2 RDF store.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=249425');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=249425">Texai Lexicon Java Library</a> </dt><dd>This package contains the semantically annotated Java classes for
the RDF entities that represent the Texai Lexicon. Included are all the
required jar files (e.g. Sesame 2).</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=254824');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=254824">Fluid Construction Grammar Java Library</a> </dt><dd>This package is a Java implementation of Fluid Construction, originally implemened in Lisp by researchers at <a onclick="javascript:urchinTracker ('/outgoing/www.emergent-languages.org');" href="http://www.emergent-languages.org/">emergent-languages.org</a>. See this <a onclick="javascript:urchinTracker ('/outgoing/www.csl.sony.fr/downloads/papers/2004/tutorial.pdf');" href="http://www.csl.sony.fr/downloads/papers/2004/tutorial.pdf">brief tutorial</a>.
The Emergent Languages web site has more information about Fluid
Construction Grammar and its role in emergent languages research. This
Java release will be feature-frozen and new features, namely
incremental parsing, will be placed into a new Java release
IncrementalFCG now under development.</dd>
<p>
</p>
<dt>
<br></dt>
<p>
</p>
<dt><a onclick="javascript:urchinTracker ('/outgoing/sourceforge.net/project/showfiles.php?group_id="176781&package_id=248617');"" href="http://sourceforge.net/project/showfiles.php?group_id=176781&amp;package_id=248617">Texai Utilities Java Library</a> </dt><dd>This Java class library provides utilities for the remainder of the Texai project.</dd></dl>
<br><img src ="http://www.cnitblog.com/damon/aggbug/39408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2008-01-28 17:46 <a href="http://www.cnitblog.com/damon/articles/39408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Generating XML via Java</title><link>http://www.cnitblog.com/damon/articles/39332.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Sat, 26 Jan 2008 02:33:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/39332.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/39332.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/39332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/39332.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/39332.html</trackback:ping><description><![CDATA[<h1>Generating XML via Java</h1>
<font face="Verdana, arial, helvetica, sans-serif" size="-1">XML
developers used to rely on XML parsers to read
XML files. They also used to rely on XML processors
to transform XML to *ML (HTML, XML ...). However,
most of them forget these tools to generate
XML from scratch. They should not ...</font>
<p><font face="Verdana, arial, helvetica, sans-serif" size="-1">Below,
the XML file (<a  href="http://www.javazoom.net/services/newsletter/xmlgeneration/users.xml">users.xml</a>)
you want to generate from input data. It's just
a list of user. Each user has an ID a TYPE and
a NAME (Full definition is available in <a  href="http://www.javazoom.net/services/newsletter/xmlgeneration/users.dtd">users.dtd</a>).</font></p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td bgcolor="#333333">
            <table border="0" cellpadding="1" cellspacing="1" width="100%">
                <tbody>
                    <tr bgcolor="#cccccc">
                        <td align="center" bgcolor="#cccccc">
                        <div align="center"><font color="#000066" face="Verdana, arial, helvetica, sans-serif" size="-2"><strong>Input data</strong></font></div>
                        </td>
                        <td align="center">
                        <div align="center"><font color="#000066" face="Verdana, arial, helvetica, sans-serif" size="-2"><strong>Matching valid XML file : users.xml</strong></font></div>
                        </td>
                    </tr>
                    <tr>
                        <td align="center" bgcolor="#ffffff" valign="top">
                        <table border="1" bordercolor="#cccccc" cellpadding="0" cellspacing="0" width="100%">
                            <tbody>
                                <tr align="center" bgcolor="#cccccc">
                                    <td bgcolor="#eeeeee"><font face="Verdana, arial, helvetica, sans-serif" size="-2">NAME</font></td>
                                    <td bgcolor="#eeeeee"><font face="Verdana, arial, helvetica, sans-serif" size="-2">ID</font></td>
                                    <td bgcolor="#eeeeee"><font face="Verdana, arial, helvetica, sans-serif" size="-2">TYPE</font></td>
                                </tr>
                                <tr align="center">
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">Tim@Home</font></td>
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">PWS122</font></td>
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">customer</font></td>
                                </tr>
                                <tr align="center">
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">Jack&amp;Moud</font></td>
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">MX787</font></td>
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">manager</font></td>
                                </tr>
                                <tr align="center">
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">John
                                    D'o&#233;</font></td>
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">A4Q45</font></td>
                                    <td><font face="Verdana, arial, helvetica, sans-serif" size="-2">employee</font></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                        <td bgcolor="#ffffff"><font face="Verdana, arial, helvetica, sans-serif" size="-2">&lt;?xml
                        version="1.0" encoding="ISO-8859-1"?&gt;<br>
                        &lt;!DOCTYPE USERS SYSTEM "users.dtd"&gt;<br>
                        &lt;USERS&gt;<br>
                        &nbsp;&nbsp;&lt;USER ID="PWD122"
                        TYPE="customer"&gt;Tim@Home&lt;/USER&gt;<br>
                        &nbsp;&nbsp;&lt;USER ID="MX787"
                        TYPE="manager"&gt;Jack&amp;amp;Moud&lt;/USER&gt;<br>
                        &nbsp;&nbsp;&lt;USER ID="A4Q45"
                        TYPE="employee"&gt;John
                        D&amp;apos;o&#233;&lt;/USER&gt;<br>
                        &lt;/USERS&gt;</font></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p><font face="Verdana, Arial, Helvetica, sans-serif"><strong>A</strong></font><font face="Verdana, arial, helvetica, sans-serif" size="-1"><strong>n</strong>
XML novice developer could write the following
code to quickly generate users.xml :<br>
</font></p>
<table border="0" cellpadding="1" cellspacing="1" width="100%">
    <tbody>
        <tr>
            <td align="center" bgcolor="#66ccff"><font face="Verdana, arial, helvetica, sans-serif" size="-1"><strong>(1)
            - Serialization to file output stream -
            </strong></font></td>
        </tr>
        <tr>
            <td bgcolor="#eeeeff"><font color="#0000ff" face="Verdana, arial, helvetica, sans-serif" size="-2">[...]</font><font face="Verdana, arial, helvetica, sans-serif" size="-2"><br>
            String ENCODING = "<font color="#cc0000">ISO-8859-1</font>";<br>
            String[] id = {"<font color="#cc0000">PWD122</font>","<font color="#cc0000">MX787</font>","<font color="#cc0000">A4Q45</font>"};<br>
            String[] type = {"<font color="#cc0000">customer</font>","<font color="#cc0000">manager</font>","<font color="#cc0000">employee</font>"};<br>
            String[] desc = {"<font color="#cc0000">Tim@Home</font>","<font color="#cc0000">Jack&amp;Moud</font>","<font color="#cc0000">John
            D'o&#233;</font>"};<br>
            PrintWriter out = new PrintWriter(new FileOutputStream("users.xml"));<br>
            out.println("&lt;?xml version=\"1.0\"
            encoding=\""+ENCODING+"\"?&gt;");<br>
            out.println("&lt;!DOCTYPE USERS SYSTEM
            \"<font color="#cc0000">users.dtd</font>\"&gt;");<br>
            out.println("&lt;USERS&gt;");<br>
            for (int i=0;i&lt;id.length;i++)<br>
            {<br>
            &nbsp;&nbsp;out.println("&lt;USER ID=\""+id[i]+"\"
            TYPE=\""+type[i]+"\"&gt;"+desc[i]+"&lt;/USER&gt;");<br>
            }<br>
            out.println("&lt;/USERS&gt;");<br>
            <font color="#0000ff">[...]</font></font></td>
        </tr>
    </tbody>
</table>
<p><font face="Verdana, arial, helvetica, sans-serif" size="-1">
Unfortunately, this code does <u>not generate
valid XML</u>. Look at "Jack&amp;Moud"
username, it has to be translated to "Jack&amp;amp;Moud"
because of '&amp;' special character (called
predefined entity). In addition to these specials
characters, the developer has to take into account
XML processing instructions (i.e. : &lt;?xml-stylesheet
type="text/xsl" href="users.xsl"?&gt;),
entity references, comments and cd-data section
(An XML reference syntax is available in PDF
format <a  href="http://www.mulberrytech.com/quickref/XMLquickref.pdf">here</a>).</font><font face="Verdana, arial, helvetica, sans-serif" size="-1"><br>
<br>
</font><font face="Verdana, Arial, Helvetica, sans-serif"><strong>O</strong></font><font face="Verdana, arial, helvetica, sans-serif" size="-1"><strong>b</strong>viously,
Java XML libraries (parsers and/or processors)
should be used to generate well-formed and valid
XML. The first solution creates a DOM document
from scratch and serialize it to XML. The following
code uses Xerces to do so :<br>
</font></p>
<table border="0" cellpadding="1" cellspacing="1" width="100%">
    <tbody>
        <tr>
            <td align="center" bgcolor="#66ccff"><font face="Verdana, arial, helvetica, sans-serif" size="-1"><strong>(2)
            - DOM + Xerces serialization to file output
            stream - </strong></font></td>
        </tr>
        <tr>
            <td bgcolor="#eeeeff"><font face="Verdana, arial, helvetica, sans-serif" size="-2">import
            java.io.*;<br>
            <font color="#006633" face="Verdana, arial, helvetica, sans-serif" size="-2">//
            DOM</font><br>
            import org.w3c.dom.*; <font color="#006633"><br>
            // Xerces classes.</font><br>
            import org.apache.xerces.dom.DocumentImpl;<br>
            import org.apache.xml.serialize.*;<br>
            <font color="#0000ff">[...]</font><br>
            Element e = null;<br>
            Node n = null;<br>
            <font color="#006633">// Document (Xerces
            implementation only).</font><br>
            Document xmldoc= new DocumentImpl();<br>
            <font color="#006633">// Root element.</font><br>
            Element root = xmldoc.createElement("USERS");<br>
            String[] id = {"<font color="#cc0000">PWD122</font>","<font color="#cc0000">MX787</font>","<font color="#cc0000">A4Q45</font>"};<br>
            String[] type = {"<font color="#cc0000">customer</font>","<font color="#cc0000">manager</font>","<font color="#cc0000">employee</font>"};<br>
            String[] desc = {"<font color="#cc0000">Tim@Home</font>","<font color="#cc0000">Jack&amp;Moud</font>","<font color="#cc0000">John
            D'o&#233;</font>"};<br>
            for (int i=0;i&lt;id.length;i++)<br>
            {<br>
            <font color="#006633">&nbsp;&nbsp;// Child
            i.</font><br>
            &nbsp;&nbsp;e = xmldoc.createElementNS(null,
            "USER");<br>
            &nbsp;&nbsp;e.setAttributeNS(null, "ID",
            id[i]);<br>
            &nbsp;&nbsp;e.setAttributeNS(null, "TYPE",
            type[i]);<br>
            &nbsp;&nbsp;n = xmldoc.createTextNode(desc[i]);<br>
            &nbsp;&nbsp;e.appendChild(n);<br>
            &nbsp;&nbsp;root.appendChild(e);<br>
            }<br>
            xmldoc.appendChild(root);<br>
            FileOutputStream fos = new FileOutputStream(filename);<br>
            <font color="#006633">// XERCES 1 or 2 additionnal
            classes.</font><br>
            OutputFormat of = new OutputFormat("XML","<font color="#cc0000">ISO-8859-1</font>",true);<br>
            of.setIndent(1);<br>
            of.setIndenting(true);<br>
            of.setDoctype(null,"<font color="#cc0000">users.dtd</font>");<br>
            XMLSerializer serializer = new XMLSerializer(fos,of);<br>
            <font color="#006633">// As a DOM Serializer</font><br>
            serializer.asDOMSerializer();<br>
            serializer.serialize( xmldoc.getDocumentElement()
            );<br>
            fos.close();<br>
            <font color="#0000ff">[...]</font></font></td>
        </tr>
    </tbody>
</table>
<p><font face="Verdana, arial, helvetica, sans-serif" size="-1">This
solution works nice for small XML files but
it should be avoided for big files because it's
memory consuming. Indeed, the full DOM document
(Element, Node, Attributes ...) is in memory
before being serialized. It's the major drawback
of DOM.<br>
<br>
</font><font face="Verdana, Arial, Helvetica, sans-serif"><strong>A</strong></font><font face="Verdana, arial, helvetica, sans-serif" size="-1">
<strong>m</strong>emory-friendly solution is to serialize
the XML file on the fly through SAX. <br>
The code below uses Xerces to do so :</font></p>
<table border="0" cellpadding="1" cellspacing="1" width="100%">
    <tbody>
        <tr>
            <td align="center" bgcolor="#66ccff"><font face="Verdana, arial, helvetica, sans-serif" size="-1"><strong>(3)
            - SAX + Xerces serialization to file output
            stream - </strong></font></td>
        </tr>
        <tr>
            <td bgcolor="#eeeeff"><font face="Verdana, arial, helvetica, sans-serif" size="-2">import
            java.io.*;<br>
            <font color="#006633">// Xerces 1 or 2 additional
            classes.</font><br>
            import org.apache.xml.serialize.*;<br>
            import org.xml.sax.*;<br>
            import org.xml.sax.helpers.*;<br>
            <font color="#0000ff">[...]</font><br>
            FileOutputStream fos = new FileOutputStream(filename);<br>
            <font color="#006633">// XERCES 1 or 2 additionnal
            classes.</font><br>
            OutputFormat of = new OutputFormat("XML","<font color="#cc0000">ISO-8859-1</font>",true);<br>
            of.setIndent(1);<br>
            of.setIndenting(true);<br>
            of.setDoctype(null,"<font color="#cc0000">users.dtd</font>");<br>
            XMLSerializer serializer = new XMLSerializer(fos,of);<br>
            <font color="#006633">// SAX2.0 ContentHandler.</font><br>
            ContentHandler hd = serializer.asContentHandler();<br>
            hd.startDocument();<br>
            <font color="#006633">// Processing instruction
            sample.<br>
            //hd.processingInstruction("xml-stylesheet","type=\"text/xsl\"
            href=\"users.xsl\"");</font><br>
            <font color="#006633">// USER attributes</font>.<br>
            AttributesImpl atts = new AttributesImpl();<br>
            <font color="#006633">// USERS tag.</font><br>
            hd.startElement("","","USERS",atts);<br>
            <font color="#006633">// USER tags.</font><br>
            String[] id = {"<font color="#cc0000">PWD122</font>","<font color="#cc0000">MX787</font>","<font color="#cc0000">A4Q45</font>"};<br>
            String[] type = {"<font color="#cc0000">customer</font>","<font color="#cc0000">manager</font>","<font color="#cc0000">employee</font>"};<br>
            String[] desc = {"<font color="#cc0000">Tim@Home</font>","<font color="#cc0000">Jack&amp;Moud</font>","<font color="#cc0000">John
            D'o&#233;</font>"};<br>
            for (int i=0;i&lt;id.length;i++)<br>
            {<br>
            &nbsp;&nbsp;atts.clear();<br>
            &nbsp;&nbsp;atts.addAttribute("","","ID","CDATA",id[i]);<br>
            &nbsp;&nbsp;atts.addAttribute("","","TYPE","CDATA",type[i]);<br>
            &nbsp;&nbsp;hd.startElement("","","USER",atts);<br>
            &nbsp;&nbsp;hd.characters(desc[i].toCharArray(),0,desc[i].length());<br>
            &nbsp;&nbsp;hd.endElement("","","USER");<br>
            }<br>
            hd.endElement("","","USERS");<br>
            hd.endDocument();<br>
            fos.close();<br>
            <font color="#0000ff">[...]</font></font></td>
        </tr>
    </tbody>
</table>
<p><font face="Verdana, arial, helvetica, sans-serif" size="-1">SAX
is an event-based API. Basically, to read an
XML file, you implement ContentHandler interface.
startElement(), characters(...), endElement()
methods are called when XML file is parsed.
Xerces provides a reverse solution. Developer
calls startElement(...), characters(...), endElement(...)
SAX methods to generate the XML file.<br>
<br>
</font><font face="Verdana, Arial, Helvetica, sans-serif"><strong>S</strong></font><font face="Verdana, arial, helvetica, sans-serif" size="-1"><strong>a</strong>mples
above need Xerces library but what about others
libraries : Crimson, JDOM, <br>
Xalan2, JDK 1.4 .... ? How to select an XML
parser and/or an XML processor ? How to make
a java code not dependant from a specific library
?<br>
A good solution is JAXP 1.1. <strong>JAXP 1.1</strong>
is an API developped by SUN. <strong>It allows to
plug any XML parser and/or processor</strong> and
"write once, run anywhere" your Java/XML
code. Implementation of this API is available
in JDK1.4 and provided by Xalan2 too.<br>
Here are similar samples for XML generation
with JAXP 1.1 :<br>
</font></p>
<table border="0" cellpadding="1" cellspacing="1" width="100%">
    <tbody>
        <tr>
            <td align="center" bgcolor="#66ccff"><font face="Verdana, arial, helvetica, sans-serif" size="-1">
            <strong>(4) - JAXP + DOM + Serialization to servlet
            output stream : JDK 1.4 compliant - </strong></font></td>
        </tr>
        <tr>
            <td bgcolor="#eeeeff"><font face="Verdana, arial, helvetica, sans-serif" size="-2">import
            java.io.*;<br>
            <font color="#006633">// DOM classes.</font><br>
            import org.w3c.dom.*;<br>
            <font color="#006633">//JAXP 1.1</font><br>
            import javax.xml.parsers.*;<br>
            import javax.xml.transform.*;<br>
            import javax.xml.transform.stream.*;<br>
            import javax.xml.transform.dom.*; <br>
            <font color="#0000ff">[...]</font><br>
            <font color="#006633">// PrintWriter from
            a Servlet</font><br>
            PrintWriter out = response.getWriter();<font color="#006633"><br>
            // Create XML DOM document (Memory consuming).</font><br>
            Document xmldoc = null;<br>
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();<br>
            DocumentBuilder builder = factory.newDocumentBuilder();<br>
            DOMImplementation impl = builder.getDOMImplementation();<br>
            Element e = null;<br>
            Node n = null;<br>
            <font color="#006633">// Document.</font><br>
            xmldoc = impl.createDocument(null, "USERS",
            null);<br>
            <font color="#006600">// Root element.</font><br>
            Element root = xmldoc.getDocumentElement();<br>
            String[] id = {"<font color="#cc0000">PWD122</font>","<font color="#cc0000">MX787</font>","<font color="#cc0000">A4Q45</font>"};<br>
            String[] type = {"<font color="#cc0000">customer</font>","<font color="#cc0000">manager</font>","<font color="#cc0000">employee</font>"};<br>
            String[] desc = {"<font color="#cc0000">Tim@Home</font>","<font color="#cc0000">Jack&amp;Moud</font>","<font color="#cc0000">John
            D'o&#233;</font>"};<br>
            for (int i=0;i&lt;id.length;i++)<br>
            {<br>
            <font color="#006633">&nbsp;&nbsp;// Child
            i.</font><br>
            &nbsp;&nbsp;e = xmldoc.createElementNS(null,
            "USER");<br>
            &nbsp;&nbsp;e.setAttributeNS(null, "ID",
            id[i]);<br>
            &nbsp;&nbsp;e.setAttributeNS(null, "TYPE",
            type[i]);<br>
            &nbsp;&nbsp;n = xmldoc.createTextNode(desc[i]);<br>
            &nbsp;&nbsp;e.appendChild(n);<br>
            &nbsp;&nbsp;root.appendChild(e);<br>
            }<br>
            <font color="#006633">// Serialisation through
            Tranform.</font><br>
            DOMSource domSource = new DOMSource(xmldoc);<br>
            StreamResult streamResult = new StreamResult(out);<br>
            TransformerFactory tf = TransformerFactory.newInstance();<br>
            Transformer serializer = tf.newTransformer();<br>
            serializer.setOutputProperty(OutputKeys.ENCODING,<font color="#cc0000">"ISO-8859-1</font>");<br>
            serializer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"<font color="#cc0000">users.dtd</font>");<br>
            serializer.setOutputProperty(OutputKeys.INDENT,"yes");<br>
            serializer.transform(domSource, streamResult);
            <br>
            <font color="#0000ff">[...]</font></font></td>
        </tr>
    </tbody>
</table>
<br>
<table border="0" cellpadding="1" cellspacing="1" width="100%">
    <tbody>
        <tr>
            <td align="center" bgcolor="#66ccff"><font face="Verdana, arial, helvetica, sans-serif" size="-1">
            <strong>(5) - JAXP + SAX + Serialization to servlet
            output stream : JDK 1.4 compliant - </strong></font></td>
        </tr>
        <tr>
            <td bgcolor="#eeeeff">
            <p><font face="Verdana, arial, helvetica, sans-serif" size="-2">import
            java.io.*;<br>
            <font color="#006633">// SAX classes.</font><br>
            import org.xml.sax.*;<br>
            import org.xml.sax.helpers.*;<br>
            <font color="#006633">//JAXP 1.1</font><br>
            import javax.xml.parsers.*;<br>
            import javax.xml.transform.*;<br>
            import javax.xml.transform.stream.*;<br>
            import javax.xml.transform.sax.*; <br>
            <font color="#0000ff">[...]</font><br>
            <font color="#006633">// PrintWriter from
            a Servlet</font><br>
            PrintWriter out = response.getWriter();<br>
            StreamResult streamResult = new StreamResult(out);<br>
            SAXTransformerFactory tf = (SAXTransformerFactory)
            SAXTransformerFactory.newInstance();<br>
            <font color="#006633">// SAX2.0 ContentHandler.</font><br>
            TransformerHandler hd = tf.newTransformerHandler();<br>
            Transformer serializer = hd.getTransformer();<br>
            serializer.setOutputProperty(OutputKeys.ENCODING,"<font color="#cc0000">ISO-8859-1</font>");<br>
            serializer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"<font color="#cc0000">users.dtd</font>");<br>
            serializer.setOutputProperty(OutputKeys.INDENT,"yes");<br>
            hd.setResult(streamResult);<br>
            hd.startDocument();<br>
            AttributesImpl atts = new AttributesImpl();<br>
            <font color="#006633">// USERS tag.</font><br>
            hd.startElement("","","USERS",atts);<br>
            <font color="#006633">// USER tags.</font><br>
            String[] id = {"<font color="#cc0000">PWD122</font>","<font color="#cc0000">MX787</font>","<font color="#cc0000">A4Q45</font>"};<br>
            String[] type = {"<font color="#cc0000">customer</font>","<font color="#cc0000">manager</font>","<font color="#cc0000">employee</font>"};<br>
            String[] desc = {"<font color="#cc0000">Tim@Home</font>","<font color="#cc0000">Jack&amp;Moud</font>","<font color="#cc0000">John
            D'o&#233;</font>"};<br>
            for (int i=0;i&lt;id.length;i++)<br>
            {<br>
            &nbsp;&nbsp;atts.clear();<br>
            &nbsp;&nbsp;atts.addAttribute("","","ID","CDATA",id[i]);<br>
            &nbsp;&nbsp;atts.addAttribute("","","TYPE","CDATA",type[i]);<br>
            &nbsp;&nbsp;hd.startElement("","","USER",atts);<br>
            &nbsp;&nbsp;hd.characters(desc[i].toCharArray(),0,desc[i].length());<br>
            &nbsp;&nbsp;hd.endElement("","","USER");<br>
            }<br>
            hd.endElement("","","USERS");<br>
            hd.endDocument();</font><font face="Verdana, arial, helvetica, sans-serif" size="-2"><br>
            <font color="#0000ff">[...]</font></font></p>
            </td>
        </tr>
    </tbody>
</table>
<font face="Verdana, arial, helvetica, sans-serif" size="-1">This
last sample might be the best solution because
it uses JAXP 1.1 so it will work under JDK 1.4
or JDK 1.2/1.3 with XALAN2 library (or any XML
library JAXP 1.1 compliant). It's also memory-friendly
because it doesn't need DOM.<br>
<br>
Assuming that you're not convinced that you
should use JAXP, think about Servlet Engines
(Tomcat, Resin ...) and Application servers
(Websphere, Weblogic ...) .Most of them already
include an XML parser/processor and try to add
a new one could generate seal errors. In conclusion,
well-formed XML generation is not so easy for
a novice programmer. A smart, standard, portable,
memory-friendly, solution should be based on
JAXP 1.1 + SAX.</font><br><br><img src ="http://www.cnitblog.com/damon/aggbug/39332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2008-01-26 10:33 <a href="http://www.cnitblog.com/damon/articles/39332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Software Tools for NLP</title><link>http://www.cnitblog.com/damon/articles/38984.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Thu, 17 Jan 2008 08:52:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/38984.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/38984.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/38984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/38984.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/38984.html</trackback:ping><description><![CDATA[<header>
</header>
<p>
</p>
<center>
<h1>Software Tools for NLP</h1>
</center>
<p><!------------------------------------------------------------------------>
</p>
<h2><font color="#ff0000">Software Archive</font></h2>
<ul>
    <li><a href="http://www.cs.cmu.edu/Web/Groups/AI/html/repository.html">CMU
    Artificial Intelligence Repository</a>
    </li>
    <li><a href="http://crl.nmsu.edu/Tools/">Resources Available Through CRL</a>
    </li>
    <li><a href="http://www.sil.org/computing/sil_computing.html">SIL Computing
    Resources</a>
    </li>
    <li><a href="ftp://garbo.uwasa.fi/pc/linguistics/">Linguistics Tools at the
    University of Vaasa in Finland</a>
    </li>
    <li><a href="http://www.scs.leeds.ac.uk/nlp/">Leeds University, Natural
    Language Processing Research Group: RESOURCES</a>
    </li>
    <li><a href="http://www.icot.or.jp/ICOT/IFS/ifs.html">ICOT Free Software</a>
    </li>
    <li><a href="http://www.netlib.org/">Netlib Repository</a> (<a href="http://phase.etl.go.jp/netlib/">mirror in Japan</a>) </li>
</ul>
<!------------------------------------------------------------------------>
<h2><font color="#ff0000">General Information</font></h2>
<ul>
    <li><a href="http://www.sourcebank.com/index.asp">Sourcebank</a> - a search
    engine for programming resources.
    </li>
    <li><a href="http://www.gwdg.de/%7Emromppe/contsoft.htm">Resources related to
    content analysis and text analysis - Software</a>
    </li>
    <li><a href="http://www.uq.edu.au/%7Ecsmpeder/systems.html">Some publically
    available NLP packages</a>
    </li>
    <li><a href="http://ec.tmit.ac.jp/koyama/linux/SAL/">SAL (Scientific
    Applications on Linux)</a>
    <ul><a href="http://ec.tmit.ac.jp/koyama/linux/SAL/Z/3/">Artificial
        Intelligence</a></ul>
        </li>
        <li><a href="http://nl.ijs.si/%7Etomaz/telri-wg5/pub-tools/tihany-html-paper/">Public
        Domain Generic Tools: An Overview</a> - a paper written by Tomaz Erjavec
        </li>
        <li><a href="http://www.ifi.unizh.ch/groups/CL/InteractiveTools.html">A
        collection of online interactive CL tools</a> (Computational Linguistics
        Group, University of Zurich)
        </li>
        <li><a href="http://www.linguistlist.org/software.html">The LINGUIST List:
        Software</a>
        </li>
        <li><a href="http://cl-www.dfki.uni-sb.de/cl/registry/draft.html">The Natural
        Language Software Registry</a>
        </li>
        <li><a href="http://www.ltg.hcrc.ed.ac.uk/helpdesk/">Language Software
        Helpdesk</a>
        <ul>
            <li><a href="http://www.ltg.hcrc.ed.ac.uk/helpdesk/faq/">Frequently Asked
            Questions</a> </li>
        </ul>
        </li>
        <li><a href="http://www.cis.upenn.edu/%7Eadwait/penntools.html">PennTools</a> -
        Computational Linguistics Resources At Penn.
        </li>
        <li><a href="http://adam.wins.uva.nl/%7Evisser/parsing/">Parsing Resources</a>
        </li>
        <li><a href="http://www.liv.ac.uk/%7Etony1/taggers.txt">Taggers online, email
        message containing addresses</a>
        </li>
        <li><a href="http://www.sfs.nphil.uni-tuebingen.de/%7Eabney/Parsers.html">Parsers and
        Taggers Information</a> (by Steven Paul Abney)
        </li>
        <li><a href="http://www.de.relator.research.ec.org/">Relator Language
        Processing Resources</a>
        </li>
        <li><a href="http://www.comp.lancs.ac.uk/computing/research/ucrel/tools.html">Corpus
        Search Tools</a>
        </li>
        <li><a href="http://www.dms.unina.it/%7Ecd/software.html">Neural Networks &amp;
        Statistics: Software</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Tagger, Morphological Analyzer</font></h2>
    <ul>
        <li><a href="http://www.cs.cmu.edu/%7Ekseymore/general_tagger.pl">A Perl/Tk text
        tagger</a>
        </li>
        <li><a href="http://www.conexor.fi/">Conexor</a>
        </li>
        <li><a href="http://www.cogilex.com/">Cogilex R&amp;D inc</a> - Makers of
        expert tools for natural language processing
        </li>
        <li><a href="http://www.comp.lancs.ac.uk/ucrel/claws/">CLAWS part-of-speech
        tagger</a>
        </li>
        <li><a href="http://www.coli.uni-sb.de/%7Ethorsten/tnt/">TnT - Statistical
        Part-of-Speech Tagging</a>
        </li>
        <li><a href="http://elvira.lllf.uam.es/%7Efernando/projects/esT.html">POS tagger
        for Spanish</a>
        </li>
        <li><a href="http://www.ling.gu.se/%7Enivre/kurser/wwwstat/toolsTP.html">Tagging
        and Parsing tools</a>
        </li>
        <li><a href="http://www.phon.ucl.ac.uk/home/alex/project/tagging/tagging.htm">AUTASYS
        - A Fully Automatic English Wordclass Analysis System</a>
        </li>
        <li><a href="ftp://lands.let.kun.nl/pub/tosca/tlbtag/">TOSCA/LOB tagger</a>
        </li>
        <li><a href="http://www.lsi.upc.es/%7Epadro/angles/recerca.html">Relaxation
        Labelling Based Multi-Tagger</a>
        </li>
        <li><a href="http://www-clg.bham.ac.uk/QTAG/">The QTAG Part of Speech
        Tagger</a>
        </li>
        <li><a href="http://www-clg.bham.ac.uk/oliver/java/qtag/">QTAG: A portable
        Parts of Speech Tagger</a>
        </li>
        <li><a href="http://www.cl.cam.ac.uk/Research/NL/anlt.html">The Alvey Natural
        Language Tools</a>
        </li>
        <li><a href="http://www.cis.upenn.edu/%7Extag/">The XTAG Project</a>
        </li>
        <li><a href="http://www.ims.uni-stuttgart.de/Tools/DecisionTreeTagger.html">TreeTagger
        - a language independent part-of-speech tagger</a>
        </li>
        <li><a href="ftp://ftp.parc.xerox.com/pub/tagger/">Xerox Part-of-Speech
        Tagger</a>
        </li>
        <li><a href="ftp://scott.cogsci.ed.ac.uk/pub/phonology/tools/MAP/">The
        Edinburgh/Cambridge Morphological Analyser System</a>
        </li>
        <li><a href="http://jupiter.inalf.cnrs.fr/WinBrill/">Winbrill</a> - An
        adaptation of Brill's tagger to Windows 95/98.
        </li>
        <li><a href="http://www.cs.jhu.edu/%7Ebrill/code.html">Eric Brill's Part of
        Speech Tagger</a>
        </li>
        <li><a href="http://www2d.biglobe.ne.jp/%7Ehtakashi/software/BRILL_E.HTM">Software
        Plaza: Brill's Tagger</a>
        </li>
        <li><a href="http://www-psycho.uni-paderborn.de/lezius/">Morphy</a> - An
        integrated tool for German morphology and statistical part-of-speech tagging.
        </li>
        <li><a href="http://hanul.kaist.ac.kr/%7Ebgjang/MoA/">Korean Morphological
        Analyzer</a>
        </li>
        <li><a href="http://www-lab25.kuee.kyoto-u.ac.jp/nltools/">Natural Language
        Tools</a> - Japanese morphological analyzer (JUMAN) and parser (KNP) developed
        by Nagao Lab. at Kyoto University, Japan.
        </li>
        <li>WordSmith Tools - Wordsmith Tools is the Swiss Army knife of lexical
        analysis - an integrated suite of programs for looking at how words behave in
        texts. It is intended for linguists, language teachers, and anyone who needs
        to examine language.
        <ul>
            <li><a href="http://www.liv.ac.uk/%7Ems2928/homepage.html">Mike Scott's Home
            Page</a>
            </li>
            <li><a href="http://www1.oup.co.uk/cite/oup/elt/software/wsmith/">Oxford
            University Press</a> </li>
        </ul>
        </li>
        <li><a href="http://www.w3.org/MarkUp/SGML/sgml-lex/sgml-lex">A Lexical
        Analyzer for HTML and Basic SGML</a>
        </li>
        <li><a href="http://www.mat.upm.es/%7Earies/">ARIES Natural Language Tools</a> -
        Lexical platform for the Spanish language. </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Stemmer</font></h2>
    <ul>
        <li><a href="http://www.cs.jhu.edu/%7Eweiss/stem.c">Porter stemmer</a>
        </li>
        <li><a href="http://www.dcs.gla.ac.uk/idom/ir_resources/linguistic_utils/porter.c">Porter
        stemmer</a>
        </li>
        <li><a href="http://wwwots.let.ruu.nl/%7Euplift/dstem.tar.gz">Dutch Porter
        stemmer</a>
        </li>
        <li><a href="http://ils.unc.edu/iris/irisnstem.htm">IRIS stemmer</a>
        </li>
        <li><a href="ftp://n106.is.tokushima-u.ac.jp/pub/IR/Iterated-Lovins-stemmer">Iterated
        Lovins stemmer</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Collocation</font></h2>
    <ul>
        <li><a href="http://www.cs.columbia.edu/nlp/licenses/xtractLicenseDownload.html">Xtract</a>
        - Frank Smadja's Collocation Extractor. </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Parser</font></h2>
    <ul>
        <li><a href="http://www.linguistik.uni-erlangen.de/Malaga.en.html">Malaga - a
        system for automatic language analysis</a>
        </li>
        <li><a href="http://macduff.andrew.cmu.edu/ale/">Attribute-Logic Engine (ALE)
        System and Grammars</a> - A freeware logic programming and grammar parsing
        system.
        </li>
        <li><a href="http://macduff.andrew.cmu.edu/cgparser/index.html">CG Parser</a>
        - Natural deduction categorial grammar and lambda-calculus parser.
        </li>
        <li><a href="http://www.let.rug.nl/%7Evannoord/CL97/index.html">Head-Corner
        Parser</a> (by Gertjan van Noord)
        </li>
        <li><a href="ftp://ftp.cs.rochester.edu/pub/u/james/CourseParser1.2.tar.gz">A
        basic parser written to illustrate the bottom up parsing algorithms in Natural
        Language Understanding, Second Edition</a>
        </li>
        <li><a href="http://www.sfs.nphil.uni-tuebingen.de/%7Eabney/">Cass Partial
        Parser</a>
        </li>
        <li><a href="http://www.cs.utexas.edu/users/ml/chill.html">CHILL: An empirical
        parser acquisition system using inductive logic programming</a>
        </li>
        <li><a href="http://issco-www.unige.ch/tools/">ISSCO Tools</a> -
        Left-head-corner Island Parser Compiler, etc.
        </li>
        <li><a href="http://www.georgetown.edu/compling/">Georgetown University
        Natural Language Processing<br>Parser Modularity Demo page</a>
        </li>
        <li><a href="http://sil.org/pcpatr/">PC-PATR: A syntactic parser</a>
        </li>
        <li><a href="http://www.ims.uni-stuttgart.de/cuf/">IMS Stuttgart: The CUF Web
        Page</a> - Comprehensive Unification Formalism
        </li>
        <li><a href="http://cs.nyu.edu/cs/projects/proteus/app/">Apple Pie Parser</a>
        - The Apple Pie Parser is a bottom-up probabilistic chart parser which finds
        the parse tree with the best score by best-first search algorithm.
        </li>
        <li><a href="http://bobo.link.cs.cmu.edu/grammar/html/intro.html">Link Grammar
        Parser</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Corpus Tools</font></h2>
    <ul>
        <li><a href="http://webcorp.connect.org.uk/">WebCorp</a>
        </li>
        <li><a href="http://www.nsknet.or.jp/%7Epeterr-s/concordancing/concordancing.html">Concordances:
        Producing and Using them</a>
        </li>
        <li><a href="http://www.cs.vassar.edu/XCES/">XCES: Corpus Encoding Standard
        for XML</a>
        </li>
        <li><a href="http://www.dai.ed.ac.uk/staff/personal_pages/micko/RSTTool/Manual.html">RST
        Tool</a> - An RST (Rhetorical Structure Theory) Markup Tool.
        </li>
        <li><a href="http://www.isi.edu/%7Emarcu/software.html">RST Annotation Tool</a>
        </li>
        <li><a href="http://www.clg.bham.ac.uk/QWICK/index.html">Qwick</a> - corpus
        browser
        </li>
        <li><a href="http://www.ldc.upenn.edu/annotation/">Linguistic Annotation</a> -
        This page describes tools and formats for creating and managing linguistic
        annotations.
        </li>
        <li><a href="http://www.mitre.org/technology/alembic-workbench/">Alembic
        Workbench</a> - a suite of tools for the analysis of a corpus, along with the
        Alembic system to enable the automatic acquisition of domain-specific tagging
        heuristics.
        </li>
        <li><a href="http://www.mcs.surrey.ac.uk/SystemQ/">The System Quirk</a> -
        Workbench for Terminology, Lexicography and Text Analysis.
        </li>
        <li><a href="http://www.lpl.univ-aix.fr/projects/multext/">Multext:
        Multilingual Text Tools and Corpora</a>
        </li>
        <li><a href="http://www.loria.fr/Projet/XCorpus/">XCorpus</a> - An Environment
        for Managing Corpus and Multilingual Web Server
        </li>
        <li><a href="http://www2.ims.uni-stuttgart.de/%7Eoli/CorpusToolbox/">The IMS
        Corpus Toolbox Webpage</a> <br><a href="http://www.ims.uni-stuttgart.de/CorpusToolbox/">X</a>
        </li>
        <li><a href="http://www2d.meshnet.or.jp/%7Ehtakashi/">Kobe Phoenix
        Laboratory</a> - Corpus Wizard program.
        </li>
        <li><a href="http://www.rjcw.freeserve.co.uk/">Concordance</a> - A program for
        Windows NT 4.0 and Windows 95/98 which makes wordlists, concordances, and Web
        Concordances from your electronic texts.
        </li>
        <li><a href="http://www.athel.com/mono.html">MonoConc</a> (concordance
        program)
        </li>
        <li><a href="http://www.nol.net/%7Eathel/mono.html">MonoConc for Windows</a>
        (concordance program)
        </li>
        <li><a href="http://www.epas.utoronto.ca:8080/cch/tact.html">Text Analysis
        Computing Tools (TACT)</a>
        </li>
        <li><a href="http://prune.loria.fr/%7Ebonhomme/lingua/">The Lingua Project: The
        World of MultiLingual Parallel Concordancing</a>
        <br>(http://prune.loria.fr/~bonhomme/lingua/) <br>- Sentences alignment tool
        in multilingual corpora.
        </li>
        <li><a href="http://www.loria.fr/exterieur/equipe/dialogue/lingua/">The Lingua
        Project: The World of MultiLingual Parallel Concordancing</a>
        <br>(http://www.loria.fr/exterieur/equipe/dialogue/lingua/)
        </li>
        <li><a href="http://www.ims.uni-stuttgart.de/projekte/TC.html">Textual Corpora
        and Tools for their Exploration</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Language Modeling</font></h2>
    <ul>
        <li><a href="http://wwwhome.cs.utwente.nl/%7Eterdoest/mem/">Maximum Entropy
        Modeling</a>
        </li>
        <li><a href="http://www.cs.princeton.edu/%7Eristad/papers/memt.html">Maximum
        Entropy Modeling Toolkit</a>
        </li>
        <li><a href="http://svr-www.eng.cam.ac.uk/%7Eprc14/toolkit.html">CMU-Cambridge
        Statistical Language Modeling Toolkit</a>
        </li>
        <li><a href="http://www.speech.cs.cmu.edu/speech/SLM_info.html">CMU
        Statistical Language Modeling Toolkit</a> by <a href="http://www.cs.cmu.edu/afs/cs.cmu.edu/user/roni/WWW/">Roni Rosenfeld</a>
        <ul>
            <li><a href="ftp://ftp.cs.cmu.edu/project/fgdata/CMU_SLM_Toolkit_V1.0_release.tar.Z">Program</a>
            </li>
            <li><a href="http://www.cs.cmu.edu/afs/cs.cmu.edu/user/roni/WWW/toolkit-SLT95-revised.ps">Document</a>
            </li>
        </ul>
        </li>
        <li><a href="http://www.cs.cmu.edu/%7Eaberger/software.html">Trigger Toolkit</a>
        </li>
        <li><a href="ftp://ftp.cogs.susx.ac.uk/pub/users/geoffs/SGT.c">Simple
        Good-Turing Smoothing</a>
        </li>
        <li><a href="ftp://ftp.eecs.harvard.edu/users/goodman/smooth/">Smoothing tools
        software by Joshua Goodman and Stanley Chen</a>
        </li>
        <li><a href="http://www.ling.gu.se/%7Enivre/kurser/wwwstat/tools.html">Language
        modeling tools</a>
        </li>
        <li><a href="http://www.isip.msstate.edu/projects/speech/software/decision_tree/index.html">Statistical
        Decision Trees</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">HMM</font></h2>
    <ul>
        <li><a href="http://popper.massey.ac.nz/%7EARaman/hmm+pfsa.tar.gz">A HMM
        mini-toolkit</a> (by Anand Venkataraman)
        </li>
        <li><a href="http://www.cfar.umd.edu/%7Ekanungo/software/software.html">HMM
        Software</a> <br>see also: <a href="http://www.umiacs.umd.edu/users/resnik/nlstat_tutorial_summer1998/Lab_hmm.html">Exercise:
        Using a Hidden Markov Model</a>
        </li>
        <li><a href="http://www.isip.msstate.edu/projects/speech/software/discrete_hmm/index.html">Discrete
        HMM Toolkit</a>
        </li>
        <li><a href="http://www.cs.berkeley.edu/%7Emurphyk/Bayes/hmm.html">Hidden Markov
        Model (HMM) Toolbox</a>
        </li>
        <li><a href="http://metameme.sdsc.edu/">Meta-MEME: Motif-based Hidden Markov
        Models of Biological Sequences</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Language Identification</font></h2>
    <ul>
        <li><a href="ftp://crl.nmsu.edu/pub/misc/lingdet_suite.tar.gz">Ted E.
        Dunning's program</a>
        </li>
        <li><a href="http://grid.let.rug.nl/%7Evannoord/TextCat/">Gertjan van Noord's
        program</a>
        </li>
        <li><a href="http://www.link.cs.cmu.edu/dougb/src/li/">Doug Beeferman's
        program</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">FSA Tools</font></h2>
    <ul>
        <li><a href="http://www.pg.gda.pl/elka/csapp/jd/fsa.html">Finite State
        Utilities</a>
        </li>
        <li><a href="http://cs.cornell.edu/Info/People/zully/csfair/index.html">Automata
        Learning from Theory to Practice</a>
        <ul>
            <li><a href="http://cs.cornell.edu/Info/People/zully/csfair/CODE/mycode.html">Downloadable
            Software</a> </li>
        </ul>
        </li>
        <li><a href="http://www.csd.uwo.ca/research/grail/links.html">Index to
        finite-state machine software, products, and projects</a>
        </li>
        <li><a href="http://www.let.rug.nl/%7Evannoord/FSA/fsa.html">FSA utilities</a>
        <ul>
            <li><a href="http://www.let.rug.nl/%7Evannoord/papers/fsa/fsa.html">FSA
            Utilities: A Toolbox to Manipulate Finite-state Automata</a> </li>
        </ul>
        </li>
        <li><a href="http://www.csd.uwo.ca/research/grail/">Grail</a> - a symbolic
        computation environment for finite-state machines, regular expressions, and
        other formal language theory objects.
        </li>
        <li><a href="http://www.informatik.uni-kiel.de/inf/Thomas/amore.html">AMoRE</a> - A
        program for the computation of Automata, Monoids, and Regular Expressions.
        </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Speech</font></h2>
    <ul>
        <li><a href="http://htk.eng.cam.ac.uk/">HTK: Hidden Markov Model Toolkit</a>
        </li>
        <li><a href="http://cslu.cse.ogi.edu/toolkit/">CSLU Toolkit</a>
        </li>
        <li><a href="http://epos.ure.cas.cz/">The Epos Speech Synthesis System</a>
        </li>
        <li><a href="http://www.isip.msstate.edu/projects/speech/software/index.html">ISIP
        public domain speech to text system</a>
        <ul>
            <li><a href="http://www.isip.msstate.edu/projects/speech/software/asr/index.html">The
            ISIP Automatic Speech Recognition Toolkit</a> </li>
        </ul>
        </li>
        <li><a href="http://cslu.cse.ogi.edu/toolkit/">CSLU Toolkit</a> (Center for
        Spoken Language Understanding, Oregon Graduate Institute of Science and
        Technology)
        </li>
        <li><a href="http://www.cs.rice.edu/%7Eandras/ekezes.html">Computer generation
        of accent marks</a>
        </li>
        <li><a href="http://www.itl.nist.gov/div894/894.01/software.htm">Spoken
        Natural Language Processing Group Software</a>
        </li>
        <li><a href="http://www.cs.cmu.edu/afs/cs/user/lindaq/mosaic/era.tar.gz">CMU
        Error Analysis Toolkit</a>
        </li>
        <li><a href="ftp://multimedia.cc.gatech.edu/pub/audiotools/README.html">Audio
        Tools</a>
        </li>
        <li><a href="http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html">VOICEBOX:
        Speech Processing Toolbox for MATLAB</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Mathematical Software</font></h2>
    <ul>
        <li><a href="http://math.nist.gov/">NIST Guide to Available Mathematical
        Software</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Statistics</font></h2>
    <ul>
        <li><a href="http://www.mrc-bsu.cam.ac.uk/bugs/Welcome.html">Bayesian
        inference Using Gibbs Sampling</a>
        </li>
        <li><a href="http://www.math.auc.dk/%7Ejhb/CoCo/cocoinfo.html">CoCo</a> - A
        statistics package for analysis of associations between discrete variables.
        </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Machine Learning</font></h2>
    <ul>
        <li><a href="ftp://ftp.gmd.de/MachineLearning/MLT/">Machine Learning Toolbox
        (MLT)</a>
        </li>
        <li><a href="ftp://ftp.ics.uci.edu/pub/machine-learning-programs/">The Machine
        Learning Programs Repository</a>
        </li>
        <li><a href="http://www.research.att.com/%7Ewcohen/ripperd.html">The RIPPER rule
        learner</a>
        </li>
        <li><a href="http://www.gmd.de/ml-archive/ILP/public/software/mfoil">mFOIL</a>
        - An ILP systems designed to handle noisy examples. </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Support Vector Machine</font></h2>
    <ul>
        <li><a href="http://www-ai.cs.uni-dortmund.de/SOFTWARE/SVM_LIGHT/svm_light.eng.html">SVMLight</a>
        </li>
        <li><a href="http://www.cs.columbia.edu/%7Ebgrundy/svm/doc/svm.html">SVM package
        by William Noble Grundy</a>
        </li>
        <li><a href="http://www.kernel-machines.org/software.html">Kernel Machines Web
        Site</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Information Retrieval &amp; Filtering</font></h2>
    <ul>
        <li><a href="http://www.cs.mu.oz.au/%7Eoldk/seft/">seft - a Search Engine For
        Text</a>
        </li>
        <li><a href="http://www.mds.rmit.edu.au/mg/">MG</a> - Managing Gigabytes
        </li>
        <li><a href="http://www.etymon.com/Isearch/">Isearch</a> - software for
        indexing and searching text documents.
        </li>
        <li><a href="ftp://ftp.cs.cornell.edu/pub/smart/">SMART Software and test
        collections</a> (Cornell University)
        <ul>
            <li><a href="http://www-a2k.is.tokushima-u.ac.jp/member/kita/NLP/IR.html#SMART">see
            also SMART links</a> </li>
        </ul>
        </li>
        <li><a href="http://www.glue.umd.edu/%7Eoard/software.html">Doug Oard's Research
        Software Page</a> - SMART Modifications
        </li>
        <li><a href="http://www.cs.cmu.edu/%7Emccallum/bow/">Bow: A Toolkit for
        Statistical Language Modeling, Text Retrieval, Classification and
        Clustering</a>
        </li>
        <li><a href="http://www.cs.cmu.edu/%7Ejr6b/ifile/">ifile</a> - A general mail
        filtering system.
        </li>
        <li><a href="http://www.csd.uwo.ca/%7Ejamie/publications.html#IRSP">IR-STAT-PAK</a> - A
        program to compute descriptive and analytic statistics for the TREC IR trials.
        </li>
        <li><a href="ftp://beryl.ils.unc.edu/pub/Yavi/">Yavi</a> - A visual interface
        to textual information.
        </li>
        <li><a href="http://www.cs.cmu.edu/%7Ekseymore/ie.html">Labeled data sets for
        information extraction</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">String/Pattern Matching</font></h2>
    <ul>
        <li><a href="http://www.dcc.uchile.cl/%7Egnavarro/pubcode/">Online Approximate
        String Matching</a>
        </li>
        <li><a href="http://www.cs.ucdavis.edu/%7Egusfield/strmat.html">Strmat
        package</a> (exact string matching and suffix trees) </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Sentence Boundary Detector</font></h2>
    <ul>
        <li><a href="http://galaxy.cs.berkeley.edu/src/satz/">SATZ: An Adaptive
        Sentence Boundary Detector</a>
        </li>
        <li><a href="ftp://ftp.cis.upenn.edu/pub/adwait/jmx/">Adwait Ratnaparkhi's
        MXTERMINATOR</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Clustering/Classification</font></h2>
    <ul>
        <li><a href="http://fuzzy.cs.uni-magdeburg.de/fcluster/">FCLUSTER - A tool for
        fuzzy cluster analysis</a>
        </li>
        <li><a href="http://www.ll.mit.edu/IST/lnknet/index.html">LNKnet Pattern
        Classification Software</a>
        </li>
        <li><a href="http://www-users.cs.umn.edu/%7Eboley/Distribution/PDDP.html">Principal
        Direction Divisive Partitioning</a>
        </li>
        <li><a href="http://www.cs.cmu.edu/%7Edellaert/software/">k-means clustering</a>
        </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">WWW</font></h2>
    <ul>
        <li><a href="http://www.math.uio.no/%7Ejanl/w3mir/">w3mir</a> - HTTP copying and
        mirroring tool.
        </li>
        <li><a href="http://httrack.free.fr/">HTTrack</a> - The Web mirror utility.
        </li>
        <li><a href="http://softseek.zdnet.com/Internet/Web_Publishing_Tools/HTML_Conversion/">HTML
        Conversion, Shareware and Freeware</a> </li>
    </ul>
    <!------------------------------------------------------------------------>
    <h2><font color="#ff0000">Other Tools</font></h2>
    <ul>
        <li><a href="http://services.canoo.com/MorphologyBrowser.html">German
        Morphology Browser</a> (online service)
        </li>
        <li><a href="http://www.itl.atr.co.jp/mat2D/mat2D.html">'mat2D' Matrix/Vector
        Library in C</a>
        </li>
        <li><a href="http://www.gsu.edu/%7Ewwwcom/content.html">Content Analysis
        Resources</a> - for quantitative analyses of texts, transcripts, and images.
        </li>
        <li><a href="http://l2r.cs.uiuc.edu/%7Ecogcomp/">SNoW learning program</a>
        </li>
        <li><a href="http://www.ling.gu.se/%7Elager/mutbl.html">The &#181;-TBL Homepage</a> -
        Logic Programming Tools for Transformation-Based Learning
        </li>
        <li><a href="http://root.cern.ch/">ROOT: An Object-Oriented Data Analysis
        Framework</a>
        </li>
        <li><a href="http://www.soc.surrey.ac.uk/caqdas/">CAQDAS Networking
        Project</a> - Computer Assisted Qualitative Data Analysis Software
        </li>
        <li><a href="http://cm.bell-labs.com/cm/cs/who/doug/ssort.c">Suffix sort</a>
        </li>
        <li><a href="http://sls-www.lcs.mit.edu/%7Eflammia/Nb.html">Nb</a> - a graphical
        user interface for annotating the discourse structure of spoken dialogue,
        monologue, and text.
        </li>
        <li><a href="http://www.dcs.shef.ac.uk/research/groups/nlp/gate/">GATE</a> -
        General Architecture for Text Engeneering.
        </li>
        <li><a href="http://ilk.kub.nl/software.html">TiMBL: Tilburg Memory Based
        Learner</a>
        </li>
        <li><a href="http://www.lpl.univ-aix.fr/projects/multext/MtRecode/">MtRecode</a> -
        The Multext character translation program
        </li>
        <li><a href="http://cs.nyu.edu/cs/projects/proteus/evalb/">Evalb</a> - A
        bracket scoring program. It reports precision, recall, non crossing and
        tagging accuracy for given data.
        </li>
        <li><a href="http://www.cs.jhu.edu/%7Emurthy/announce.html">The OC1 decision
        tree software system</a>
        </li>
        <li><a href="http://ic-www.arc.nasa.gov/ic/projects/bayes-group/group/ind/IND-program.html">IND
        Version 2.0 - creation and manipulation of decision trees from data</a>
        </li>
        <li><a href="http://pi0959.kub.nl:2080/Paai/Publiek/index.html">Paai's text
        utilities</a>
        </li>
        <li><a href="http://www.sil.org/computing/shoebox.html">Shoebox 3.0 for
        Windows and Macintosh</a> - A database program oriented to the needs of a
        field linguist's dictionary.
        </li>
        <li><a href="http://www.ltg.hcrc.ed.ac.uk/projects/ledtools/statistical/">Teaching
        materials for statistical NLP</a> by Chris Brew, Language Technology Group,
        Human Communication Research Centre, University of Edinburgh
        </li>
        <li><a href="http://www.amu.edu.pl/%7Esipkadan/nt.htm">Introducing
        environmentalism and post-fordism into NLP</a> (NeuroTran)
        </li>
        <li><a href="http://psych.ut.ee/gling/en/">Tools for Estonian Language</a>
        </li>
        <li><a href="http://www.cis.upenn.edu/%7Emelamed/home.html">Dan Melamed's
        Page</a> - Simulated Annealing Program, XTAG morpholyzer post-processors for
        English Stemming, Good-Turing Smoothing Software, 150 miscellaneous text
        processing tools, 75 text statistics and bitext geometry tools.
        </li>
        <li><a href="http://www.uninova.pt/%7Etr/home/tooldiag.html">TOOLDIAG: Pattern
        recognition toolbox</a>
        </li>
        <li><a href="http://www.pins.co.uk/upages/probertm/dn2.htm">The DN2 Home
        Page</a> - DN2 is an intelligent self-relating free format database system
        which accepts data in human text format, and retrieves it in response to human
        requests, like Where is London?
        </li>
        <li><a href="http://www.ph.tn.tudelft.nl/PRInfo/software/maillist.html">Software
        Announcements</a>
        </li>
        <li><a href="http://www.cis.upenn.edu/%7Ejosephr/Trees/">Tools for drawing and
        graphically editing trees</a>
        </li>
        <li><a href="http://www.vuw.ac.nz/lals/software.htm">Paul Nation's vocabulary
        programs</a>
        </li>
        <li><a href="ftp://ludwig.pharm.uic.edu/pub/predict-syllables.lisp">syllable
        prediction code</a> (a simple lisp function)
        </li>
        <li><a href="http://www.ii.uib.no/%7Einge/Pratt.html">Pratt - a pattern
        discovery tool</a>
        </li>
        <li><a href="http://www.research.att.com/areas/stat/xgobi/index.html">XGobi</a> - A
        system for multivariate data visualization.
        </li>
        <li><a href="http://www.neci.nj.nec.com/homepages/flake/nodelib/html/">NODElib</a> -
        Neural Optimization Development Engine library </li>
    </ul>
    <!------------------------------------------------------------------------><!---------- END ---------->
    <br><img src ="http://www.cnitblog.com/damon/aggbug/38984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2008-01-17 16:52 <a href="http://www.cnitblog.com/damon/articles/38984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSource: AI</title><link>http://www.cnitblog.com/damon/articles/37701.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Fri, 14 Dec 2007 07:58:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/37701.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/37701.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/37701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/37701.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/37701.html</trackback:ping><description><![CDATA[<h2><a href="http://sourceforge.net/projects/yale">RapidMiner (YALE) -- Java Data Mining</a></h2>
(aka YALE) data mining, machine learning, knowledge discovery, business intelligence in Java. 400+ operators: data mining incl. Weka,learning,preprocessing,validation,visualization. GUI,API,XML,analysis,knowledge discovery,databases,business intelligence
<br><br><br>
<h2><a href="http://sourceforge.net/projects/joone">Java Object Oriented Neural Engine</a></h2>
Joone is a neural net framework written in Java. It's composed by a core engine, a GUI editor and a distributed training environment and can be extended by writing new modules to implement new algorithms or architectures starting from base components
<br><br>
<h2><a href="http://sourceforge.net/projects/sesame">Sesame</a></h2>
Sesame is a Java framework for storing, querying and inferencing for RDF. It can be deployed as a web server or used as a Java library. Features include several query languages (SeRQL and SPARQL), inferencing support, and RAM, disk, or RDBMS storage.
<br><br>
<h2><a href="http://sourceforge.net/projects/jgap">JGAP</a></h2>
JGAP is a Genetic Algorithms and Genetic Programming package written in Java. It is designed to require minimum effort to use, but is also designed to be highly modular. JGAP features grid functionality and a lot of examples. Many unit tests included.
<br><br>
<h2><a href="http://sourceforge.net/projects/mandarax">Mandarax</a></h2>
Mandarax is a pure Java implementation of a rule engine. It supports mutiples types of facts and rules based on reflection, databases, EJB etc, supporting XML standards (RuleML 0.8). It provides a J2EE compliant inference engine using backward chaining.
<br><br>
<h2><a href="http://sourceforge.net/projects/owlapi">OWL API</a></h2>
A Java interface and implementation for the W3C Web Ontology Language (OWL), used to represent Semantic Web ontologies. The API is focused towards OWL Lite, OWL DL and OWL 1.1 and offers an interface to inference engines and validation functionality.
<br><br>
<h2><a href="http://sourceforge.net/projects/bnj">Bayesian Network tools in Java (BNJ)</a></h2>
Bayesian Network tools in Java (BNJ) is an open-source suite of software tools for research and development using graphical models of probability. It is published by the Kansas State University Laboratory for Knowledge Discovery in Databases (KDD). &nbsp;
<br><br>
<h2><a href="http://sourceforge.net/projects/j-a-g-a">JAGA - Java API for Genetic Algorithms</a></h2>
Java API for implementing any kind of Genetic Algorithm and Genetic Programming applications quickly and easily. Contains a wide range of ready-to-use GA and GP algorithms and operators to be plugged-in or extended. Includes Tutorials and Examples.
<br><br>
<h2><a href="http://sourceforge.net/projects/rebecca-aiml">RebeccaAIML, Enterprise AIML platform</a></h2>
RebeccaAIML is an enterprise cross platform open source AIML development platform. RebeccaAIML supports C++, Java,C#, and Python as well as many other programming languages and AIML development out of the box with Eclipse.
<br><br>
<h2><a href="http://sourceforge.net/projects/nn-utility">Neural Network Utility</a></h2>
nn-utility is a neural network library for C++ and Java. Its aim is to simplify the tedious programming of neural networks, while allowing programmers to have maximum flexibility in terms of defining functions and network topology.
<br><br>
<h2><a href="http://sourceforge.net/projects/algernon-j">Algernon-J</a></h2>
Algernon is a rule-based reasoning engine written in Java. It allows forward and backward chaining across Protege knowledge bases. In addition to traversing the KB, rules can call Java functions and LISP functions (from an embedded LISP interpreter)
<br>
<br>
<h2><a  href="http://sourceforge.net/projects/jason">jason</a></h2>
Jason is a fully-fledged interpreter for an extended version of AgentSpeak, a BDI agent-oriented logic programming language, and is implemented in Java. Using SACI or JADE, a multi-agent system can be distributed over a network effortlessly.
<br><br>
<h2><a  href="http://sourceforge.net/projects/nlpfarm">nlpFarm</a></h2>
The nlpFarm is a Natural Language Processing (NLP) resource where early research prototypes (Java) can evolve into robust and useful open source. Our farmstead collaborates under the OpenNLP initiative, in order to make NLP software publically available.
<br><br>
<h2><a  href="http://sourceforge.net/projects/robotrader">robotrader</a></h2>
Simulation platform for automated stock exchange trading. It delivers statistics to analyse performance on historic data and allows comparison between trading strategies, that can be coded in Java.
<br><br><br><br><br><br><br><br><br>  <img src ="http://www.cnitblog.com/damon/aggbug/37701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2007-12-14 15:58 <a href="http://www.cnitblog.com/damon/articles/37701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP编程规范(简洁版)</title><link>http://www.cnitblog.com/damon/articles/35391.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Fri, 26 Oct 2007 05:39:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/35391.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/35391.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/35391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/35391.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/35391.html</trackback:ping><description><![CDATA[<p>。整个jsp/jsp bean表示层应当尽可能的瘦和简单化。 <br>。牢记大多数的JSP都应当是只读的视图，而由页面bean来提供模型。</p>
<p>。应当一起设计JSP和JSP bean&nbsp; </p>
<p>。在尽可能合理的情况下，把业务逻辑从JSP中移走。具体于HTTP的逻辑（如，对Cookie的处理）属于bean或支持类中，而不是JSP中。 </p>
<p>。尽量把条件逻辑放在控制器中而不是放在视图中。</p>
<p>。为JSP、包含的文件、JSP Bean和实现扩展标记的类使用遵循标准的命名惯例。如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsp控制器&nbsp;&nbsp; xxxxController.jsp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被包含的:&nbsp; jsp _descriptiveNameOfFragment.jsp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsp页面模型bean:&nbsp;&nbsp; &lt;pagename&gt;Bean 如loginBena.Java<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsp会话bena:&nbsp;&nbsp; xxxxSessionBean<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标记类 : xxxxTag,xxxxTagExtraInfo&nbsp;<br> </p>
<p>。应当在JSP中避免使用页面引入指令。import指令会促使类的实列化而不是jsp bean的实例化：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不用：&lt;%@ page import = "com.Java.util.*" %&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而用：&lt;% Java.util.List l = new Java.util.LinkedList(); %&gt;&nbsp; </p>
<p>。jsp不应该直接去访问请求参数。bean应当执行这样的处理过程并且输出所处理的模型数据。 </p>
<p>。jsp不应当访问属性文件，或者使用JNDI。bean可以访问属性。 </p>
<p>。如果jsp bean具有的所有的属性不能够从页面请求中被映射到，就要尽力在&lt;jsp:useBean&gt;标记中设置属性。&nbsp;<br> </p>
<p>。应当避免设计既显示表单又处理结果的页面。</p>
<p>。在jsp中避免代码重复。把要重复的功能放在一个包含的jsp、bean或标记扩展中，使得它能够被重用。 </p>
<p>。jsp bean应当永远不要去产生HTML <font color="#ffffff">编程大本营HTTp://www.timihome.net</font> </p>
<p>。在jsp中应该避免使用out.pringln()发放来产生页面内容。 </p>
<p>。jsp层不应该直接访问数据，这包括JDBC数据库访问和EJB访问。 </p>
<p>。在长度上，scriptlests的代码最好不要超过5行。 </p>
<p>。除了jsp bean之外，jsp不应当去实例化复杂的可读写的对象。如果这样的话，就有可能在jsp中去执行不适当的业务逻辑。 </p>
<p>。jsp bean中不应当包含大量的数据。 </p>
<p>。如果使用了&lt;jsp:forward&gt;和&lt;jsp:include标记&gt;，并且必须使用简单类型的值来与外部页面进行通讯的话，就应当使用一个或多个&lt;jsp:param&gt;元素 </p>
<p>。定制标记应当用在适当把逻辑从jsp中移走的地方。</p>
<p>。应当谨慎地使用&lt;jsp:forward&gt;标记，在jsp中它是一个等价的goto。</p>
<p>。应当使用隐藏的注释来阻止输出的HTML过大。</p>
<p>。在jsp中避免进行异常处理 </p>
<p>。每个jsp文件中都应当使用一个错误页面来处理不能够从中恢复的异常。 </p>
<p>。在jsp错误页面中，使用HTML注释来显示传递到该页面中的异常跟踪信息。 </p>
<p>。只有在能够获得性能上的好处时，才使用jspInin()方法和jspDestroy()方法。获取和放弃资源是jsp beans和标记处理器的事，而不是由jsp来负责的。</p>
<p>。如果没有充分的理由，就不要在jsp中定义方法和内部内。 </p>
<br> <img src ="http://www.cnitblog.com/damon/aggbug/35391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2007-10-26 13:39 <a href="http://www.cnitblog.com/damon/articles/35391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP编程规范</title><link>http://www.cnitblog.com/damon/articles/35390.html</link><dc:creator>专心练剑</dc:creator><author>专心练剑</author><pubDate>Fri, 26 Oct 2007 05:34:00 GMT</pubDate><guid>http://www.cnitblog.com/damon/articles/35390.html</guid><wfw:comment>http://www.cnitblog.com/damon/comments/35390.html</wfw:comment><comments>http://www.cnitblog.com/damon/articles/35390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/damon/comments/commentRss/35390.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/damon/services/trackbacks/35390.html</trackback:ping><description><![CDATA[<p><strong>概要：</strong><br>
随着JSP规范的不断进展，以及可用的jsp开发工具数量不断增多，以及jsp技术可涉及领域的不断的扩展，促进了基于 jsp技术的高维护性能和标准化的网络应用的开发。这篇文章讨论了在jsp进展的一些主要的内容以及这些是如何更加容易的开发处健壮的JSP网络应用。<br>
这篇文章的最佳实践将能够帮助应用JSP强大的功能以及能够让你为将来JSP的升级做好准备。<br>
<br>
JSP规范支持JSP pages同样也支持JSP
document．。两者之间主要的区别是它们对XML兼容的程度。JSP pages使用传统的或者说是&#8220;速记（shorthand）&#8221;语法，而JSP document．用的语法完全与XML相兼容。JSP document．时候被成为是使用了XML语法的JSP pages。但是这里我将分别称它们为JSP pages和JSP document．便加以区分。<br>
<br>
基于以下几个原因我推荐使用JSP document．<br>
JSP document．很好组织了的XML\HTML(You can easily
verify JSP document． as
well-formed XML/HTML)<br>
可以使用XML Schema来验证JSP document．
l 可以很容易的使用标准的XML工具来写和解析<br>
可以使用XSLT（Extensible Stylesheet Language Transformations）以不同的form来编写JSP document．具体请看&#8220;JSP
document．nbspwith XSLT&#8221;
http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp.html?#sidebar1 需要什么来搜一搜吧so.bitsCN.com <br>
JSP使用了XML相容include和forward action，custom标签，因而使得整个document．XML相容，这样就提高了编码的一致性。<br>
JSP document．相对JSP pages需要稍微多一点的开发规则，但是带来的好处是更加容易阅读和维持的document．，特别是对于刚刚开始学习JSP的人来说。<br>
<br>
关于创建JSP document．和其特点的详细内容请参考&#8220;Write JSPs in XML
Using JSP1.2&#8221;（http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-
morejsp.html?#resources）<br>
JSP document．最大的缺点是没有与XML相兼容的JSP注释存在。JSP document．以使用客户端的注释（HTML-/XML &#8211;style）或者是嵌入的java注释。但是没有JSP document．&lt;%--　--&gt; 而JSP可用的上面的两种注释方法都有其自身的缺点。你可以在得到的网页中看到客户端的注释（通过浏览器视图里面的&#8220;查看源文件&#8221;功能），而且要使用 java的注释需要将java代码直接的写在JSP document．中。<br>
<br>
在本文剩下的章节中，我将使用JSPs来代表JSP pages和JSP document．，因为我所讨论的最佳实践同样的适用这两种形式的JSP。<br>
<br>
<strong>使用</strong><strong>JSP</strong><strong>的编码规范</strong><br>
无论使用任何一种语言，创建的任何工程，在提高开发，维护，和测试你的软件的角度遵循编码的标准和规范都是很明智的选择。读其他开发人员的代码并不简单 而且也不是愉快的事情。但是，如果所有的开发人员都遵循同样的命名规范和其他的一些约定的化，阅读代码和维护就会使得阅读代码对他人和编程人员自己变的容 易一些。 bbs.bitsCN.com国内最早的网管论坛 <br>
<br>
Sun Microsytem 最近已经帮助一些组织来创建这样的规范，制定了文档&#8220;Code
Conventions for the JavaServer Pages Technology Version 1.x Language&#8221;可以免费获得，参考&#8220;Resources&#8221;(http://www.javaworld.com/javaworld/jw-07-
2003/jw-0725-morejsp.html?#resources)。如果你的公司还没有遵循JSP编程规范的话，我建议使用这个文档作为一个起点。你可以完全的遵照该文档也可以在其基础上创建自己的规范。<br>
<br>
<strong>为对象选择合适的</strong><strong>Scope</strong><br>
JSP 规范支持四种scope（应用application,会话session，请求request和页面page）,在JSPs中你可以为创建的对象选择其 中的一种，因为绑定到这些scope的对象消耗内存，并且在有些时候需要释放，所以最好选择适当的scope来完成你的任务。<br>
<br>
<strong>应用范围（</strong><strong>Application
scope</strong><strong>）</strong><br>
Application scope 是最为广泛的一个范围，应该在必要的时候才采用这种形式。你可以在非会话相关（session-aware）的JSPs中创建绑定到 application的对象（You
can create objects bound at application level in JSPs that are not
session-aware,）在这种类型的JSPs中可以用应用范围来存储数据和信息。（ so
application scope is useful for storing information when using these types of
JSPs）。你也可以使用绑定到application的对象用来在不同的会话（session）间共享数据。当你不需要application范围的对 象的时候一定要显式的删除它们以便释放内存。 bitsCN_com关注网管是我们的使命 <br>
<br>
<strong>会话范围（</strong><strong>session scope</strong><strong>）</strong><br>
在我的经验中，会话范围要比应用范围用的多。会话范围允许你创建并且将对象绑定到一个会话上面。你必须在session-aware的JSPs中创建绑 定在会话的对象并且使在同一个会话中所有的JSP和servlet能够访问到这些对象。会话范围常常用在管理安全验证和管理多个页面的状态信息。绑定在会 话范围的对象在不需要的时候也要显示的删除。当我计划将某个类的对象绑定到会话范围的时候我通常会使该类可串行化。<br>
<br>
<strong>请求范围（</strong><strong>request scope</strong><strong>）</strong><br>
在绑定对象的时候，页面范围我用的最多。此类对象只在同一个请求的页面间有效。在请求处理完成的时候这些对象将会自动的被释放。因而不需要显式的释放它们，这样就没有了使系统被一些不必要内存消耗而拖累的危险。<br>
<br>
<strong>页面范围（</strong><strong>page scope</strong><strong>）</strong><br>
当你创建只对当前页面相关的对象的时候你需要选择页面范围。和请求范围一样，绑定在页面范围的对象不要显式的删除。我很少在我的JSP应用中使用&#8220;页面范围&#8221;，但是这是&lt;jsp:useBean&gt;的默认范围。<br>
<br>
<strong>选择哪种范围（</strong><strong>scope</strong><strong>）</strong><br>
需要仔细的选择创建对象的范围来保证有效的利用内存，通常我会在刚刚开始的时候选择请求范围，然后在评估是否需要选择范围更大的范围。 bbs.bitsCN.com国内最早的网管论坛 <br>
<br>
<strong>仔细的管理会话范围</strong><br>
前面已经提到过，只有在必要的时候才选择会话范围并且当这些对象不在需要会话级访问的时候需要显式的去掉对象的其会话范围。当不使用会话范围的对象的
JSP中你可以设置页面的directive的session属性为false，这样可以避免管理会话范围。但是，很少的网络应用不需要会话范围的支持。 通常，我使用会话来支持安全机制以及其他的一些应用需求。尽管一个会在一个可以由你配置的时间后过期，但是在不需要对象的会话范围的时候最好显式的取消它 们，而不是依赖会话自动释放的功能。<br>
<br>
<strong>采用</strong><strong>JSTL</strong><strong>（标准标签库）</strong><br>
JSP的引入和采纳已经成为JSP开发人员的一个最为重要的进步。JSTL有时候也称为&#8220;JSP Standard Tag
Library&#8221;。在JSTL中的T代表的是标签（Tag）而不是模板（Template）。<br>
<br>
<strong>JSTL</strong><strong>：背景与回顾</strong><br>
在我以前的文章里，我提到过JSP开发人员采纳可以得到的自定义标签库而不是自己从头开始创建。有许多的商业的或者开源的自定义标签库现在已经可以加以 利用。但是有一个缺点就是：开发人员需要在JSP中按照这些自定义标签库所特定的格式来应用这些标签。JSTL的出现解决了这个问题，因为JSTL提供了 自定义标签的标准接口，这些标签足以满足JSP开发人员的一些基本的要求。（The advent of
JSTL has addressed this downside by providing standard interfaces to the custom
tags that perform many basic functions JSP developers need.） 不同的供应商可能以不同的形式实现这些JSTL标签，但是JSP开发人员不要知道实现标签时的不同点。如果JSP开发人员使用JSTL编写了JSP page或者JSP
document．JSP page或者JSP document．该适用所有的JSTL实现方法。 需要什么来搜一搜吧so.bitsCN.com <br>
有许多有价值的书和一些在线的资源可以去学习JSTL。这里我将主要简单的介绍JSTL的优点与特性。<br>
<br>
<strong>JSTL</strong><strong>的优点</strong><br>
简短的说，JSTL提供了所有的已经公布的自定义标签库所有的好处，而且提供标准化的标签API。JSTL促进了高可维护性和可移植性的pages和document．。我列出了JSTL一些特别的特点。<br>
JSTL提供了基于标签的遍历，条件以及其他一些功能，这些功能以前或者是直接在JSP中嵌入代码来实现的，或者是使用了自己创建的标签，非标准的标签库，或者是通过使用Servlet来代替JSP来实现的。<br>
JSTL使用了EL（expression
language）语法<br>
编写自定义标签相对其他一些JSP开发任务来说需要更多的精力与经验。JSTL通过两种方法来简化这些步骤：首先，如前所述，jstl能解决很多定制(自 定义)的tags的需要.（JSTL handles many common needs for custome tags）。其次，JSTL提供了一些机制使得编写你自定义的标签更简单，尤其是编写支持EL自定义标签的时候。<br>
<br>
<strong>具体的</strong><strong>JSTL</strong><strong>特性与优点</strong><br>
下面简单的概括JSTL4个可用自定义标签库中三个标签库的一些优点，并且给出了不推荐使用数据库访问标签库(database
access library)的原因。同样我也讨论了使用EL的优点。 </p>
<p>bitsCN_com关注网管是我们的使命</p>
<p><br>
<br>
数据访问标签库（Database access
library）<br>
JSTL提供了数据访问标签库，但是我很少用它，因为我强烈的认为不应该在JSP页面内直接访问数据库。如果在JSP中直接的访问数据库将会降低重用， 因为数据库访问的代码在使用数据库范围标签的JSP页面外是不可以被访问到的。在JSPs中直接的进行数据库访问将会加大表示层与数据层之间的耦合。严格 的分割意味着更好的模块化，复用性，以及更容易的满足表现层和数据层之间的规范（Disciplined
separation means more modularity, greater opportunity for reuse, and better
opportunities for specialization of presentation and database experts）。.我推荐在JSTL的其他三种标签库可以满足JSP开放人员的需求的时候使用这些标签库，但是我不推荐使用JSTL的数据库范围标签库 outside of prototypes
and the simplest Web applications。<br>
<br>
<strong>JSTL </strong><strong>核心标签库(</strong></p>
<p><strong>利用servlet filter</strong><strong>的特点</strong><br>
servlet filter是Servlet2。3规范中引入的，但是这些filter同样有利于JSP开发和维护。因为JSPs需要被转换成servlets， JSPs与servlet技术紧密相关。因此servlet规范的重要发展会影响到JSP的发展，对此你不应该感到奇怪。<br>
Servlet filters是Intercepting Filter模式的J2ee实现，因此提供了这个模式的所提供的特点，包括更好的维护性，少的代码冗余以及更好的可移植性。这是因为：通常你需要加入服务 到每个jsp页面中，而现在可以通过将这些服务放到一个filter中。并且这些JSPs根本不需要这些filter的存在。因为在可插入的
filters与JSPs之间没有关联性，因此在filter中的修改将不会直接影响到JSPs。你可以使用filter链，使用不同的filter的组 合，每个filter用来实现不同的目的。<br>
<br>
<strong>JSP</strong><strong>网络应用中servlet filter</strong><strong>的作用</strong><br>
下面 的两个例子说明了在基于JSP的网络应用中servlet filter的作用。在许多的安全配置中，每一个JSP页面都会检验会话ID和其他一些安全性来授权一个JSP调用。你可以将这些在每个JSP页面中的检 验代码移植到一个servlet filter中，并且确保这个filter在调用每个jsp页面之前被调用。这样就提高了JSPs的可维护性和可移植性。你可以仅仅的在这一个 servlet中进行一些安全检验方面的修改，或者是在其中加入一些和安全相关的代码。而不是在每一个JSP页面中进行修改。如果将来整个安全机制改变 了，系统中唯一要修改的地方仅仅是这个filter，独立的JSP页面将不需要任何修改。 www.bitsCN.net网管博客等你来搏 <br>
在上一篇&#8220;JSP Best Practices&#8221;中，我推荐将异常信息存储到&#8220;Secondary
Storage&#8221;中，并且仅仅的提供给用户一个可以检索这些异常信息的一个标志（and
only providing the user with an identifier to search the storage for the entire
exception trace）。在这种情况下servlet
filter非常的有用。你可以通过配置来使网络应用（Web
Application）在调用异常JSP时自动的来执行用来记录异常日志的filter。Sevlet规范提出了许多的潜在的servlet
filter用法。<br>
为JSPs的创建API文档（document．nbspthe APIs for your JSPs）<br>
Java的许多悦人心意的特点之一便是它支持JavaDoc。通过JavaDoc可以快速而容易的为java代码提供Web-based的文档。不幸的是，javadoc工具不支持JSP，并且JSP规范没有&#8220;唤起&#8221;一个方法来提供&#8220;JSP APIs&#8221;。<br>
<br>
<strong>什么是</strong><strong>JSP API</strong><strong>？</strong><br>
能够不通过阅读JSP的全部的代码就能够快速的确定一些JSP方面是非常之有用的。比方说，你需要知道哪些变量是绑定到会话(session)，请求 (request)和应用(application)的范围，并且这些变量是具体的被绑定到了具体的哪一个范围之上。另外一个JSP
API用处的例子是在JSP segment之中，segment需要知道在被包含的时候，调用它们的JSP中已经声明和制定了哪些变量（Another example of useful JSP API
information is denoting in JSP segments which variables they require the
calling JSP to have declared and defined when including them）。 </p>
<p>bitsCN.com中国网管联盟</p>
<p><br>
JSP规范没有涉及 关于如何的建立JSP API的文档。Sun的JSP 1.x 代码公约文档讨论将注释和作者，版权，以及描述的信息一起写在JSPs的上部，但是我喜欢更详细的记录JSPs的期望的输入（but
I like to document．nbspmy JSPs'
expected inputs more thoroughly）。<br>
因为JSP规范中 没有涉及到这些，因此没有一个标准的用来注释JSP API。一个方法是在JSP中使用java代码（scriptlets）并且在代码中嵌入javadoc形式的注释(/**
javadoc comment */)。尽管我很少在JSPs中使用java代码，但是这是在服务器端保留这些注释的最简单的方法。使用XML/HTML风格的注释会将JSP API暴露在客户端，这是一个很不好的方法。<br>
我知道有两种免费可以使用的产品可以用来为你的JSPs做注释，SourceForge.net 的JspDoc以及OSDN（Open
Source Development Network）的Freshmeat.net的JSPDoc。(关于两种工具的详细情况见resource【http:
//www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp-p3.html#resources】). 这里我将简要的介绍一下这两个工具。<br>
<br>
<strong>JspDoc(SourceForge)</strong><br>
SourceForge 的JspDoc可以用来为JSPs生成Javadoc风格的文档。这个工具通过将XML-Compliant的标签放入到Javadoc风格的注释 （/** */）之中，而这些注释是放在了JSP page的java代码中。这个工具的缺点是目前它仅仅支持JSP pages，尽管对JSP document．支持已经在计划列表中。 www.bitsCN.net网管博客等你来搏 <br>
这个工具还提供了转换JSP pages到JSP document．功能。因为我从一开始就编写JSP document．因为我没有用过这项功能，但是对于想从JSP pages转换到JSP document．用户来说，这是一个很好的工具。还要另外一个功能就是将JSP
document．换到JSP pages。<br>
<br>
<strong>JSPDoc(Freshmeat.net)</strong><br>
Freshmeat的JSP 文档生成器
JSPDoc从JSPs中抽取信息来创建Javadoc风格的基于Web的文档页面。这个工具的一个优点是它能够将产生的JSP文档与用Javadoc工 具产生的java类的文档结合起来。缺点是，为了产生注释要求有一个相当严格的注释结构。这个特殊的语法使用了Javadoc的（/** */）但是并不能够识别@符号，而@在标准javadoc是有一定的含义的。另一个缺点就是这个工具不支持XML－compliant的JSP
document．而是要求用&lt;%%&gt;的语法结构。This product is available
under the Mozilla public license.<br>
JSP document．tion for JSP document． 因为JspDoc和JSPDoc都不支持JSP document．我利用JSP document．XML-compliance的特性来产生Javadoc形式的文档。使用XSLT stylesheet，可是很容易的来为JSP document．建HTML页面形式的注释文档。而且不需要自定义的解析。因为当你的JSP是一个正确的XML文档时有标准的工具（比方Xalan）能 够进行这些处理。</p>
<p>&nbsp;</p>
<p>　　当你在浏览器中键入URL来执行JSP时，JSP在以HTML的形式提交给用户之前需要经历一系列的处理。正是因为这些处理，因此当第一次请求jsp
的时候需要的时间要比其后对这个jsp页面的访问需要的时间要长很多。很多的开发人员都知道在发布的时候预编译JSPs的重要性，同样的，在开发阶段进行 预编译也是很有用的。<br>
你可以在编译代码的阶段，在编译与JSP相关的javabean、自定义标签处理类（custom tag handler classes）、其他一些相关的类以及servlet的同时预编译JSP。这样只需要进行一次的编译，减少了某一个时间内需要的编译的时间。对于开发人 员来说，这非常有好处，因为在等待编译的时候，他们很容易分心。因此一次性的进行所以的编译相对与只是在请求jsp的时候才进行编译是很有好处的。<br>
预编译可以发现语法问题（parser problem）以及其他一些翻译时期（translation-time）出现的问题。这些问题通常需要多个步骤才能够定位。这样对于开发人员来说是有 意义的，这样开发人员就不需要通过浏览多个页面后才可以定位存在问题的页面了。如果使用JSP
document．话，那么还可以在预编译的时候来验证JSP document．结构。<br>
预编译的另一个好处是可以在发布的war文件中包含你的编译了的JSP版本，而不是实际的JSP源代码。JSP进行编译后，就可以以.class文件包含在发布的产品中（这些.class文件名满足容器的供应商特定的命名约定）。 bitsCN_com <br>
大多数的Java 2平台，J2EE以及一些java工具都支持JSP预编译，专业的网络容器也支持JSP预编译，尽管可能是通过一种非标准的命令或者界面。许多的网络容器 都支持命令行形式的JSP预编译，你可以在你的scripted builds中加入这些命令行。<br>
<br>
<strong>组织文件和目录</strong><br>
下面的技术有助于JSP的开发与维护，能够使得你的JSP开发和维护更容易和高效：<br>
l 组织Web的根目录<br>
l 组织好WEB－INF目录，合理的使用子目录<br>
l 以.jspf的扩展名来标识JSP
fragments（需要被include在其他jsp页面中的jsp文件，译者注）<br>
l 使用IDE，ANT，以及其他一些自动生成工具<br>
<br>
<strong>组织</strong><strong>Web</strong><strong>的根目录</strong><br>
你可以通过将所有的Web应用所有的文件直接的放到web的根目录下面，这个目录就是WEB－INF目录所在的目录。我推荐合理的组织这个目录，比方说 在其中加入jsp,html,css以及css等子目录。对于简单的应用来说，是否需要这样来划分目录还有争议但是对于大的网络应用来可以增强理解以及维 护性能。<br>
<br>
<strong>组织</strong><strong>WEB-INF</strong><strong>目录</strong><br>
标签酷是在JSP开发中很有价值的资源。大的网络应用可能包含有几个 标签库比方说：JSTL标签库、Struts标签库以及其他的一些标签库。我推荐在WEB-INF目录下面建立一个tld子目录来存放这些标签库而不是将 这些标签库放在WEB-INF目录下面。这样可能会&#8220;淹没&#8221;了这个目录。 </p>
<p>需要什么来搜一搜吧so.bitsCN.com</p>
<p><br>
<br>
<strong>以</strong><strong>.jspf</strong><strong>的扩展名来标识JSP fragments</strong><br>
在最近版本的JSP规范中的JSP segments（以前版本称为JSP
fragments）即.jspf文件是不完整的JSPs，是用来被其他的JSP来包含的。JSP规范建议使用命名规范来区别&#8220;外层&#8221;的JSPs和JSP fragments/segments。通常将命名完整的&#8220;外层&#8221;的文件以&#8220;.jsp&#8221;为扩展名，而JSP fragments/segments以&#8220;.jspf&#8221;为扩展名，但是规范并没有要求这样做。我同样推荐将完整和&#8220;外层&#8221;的JSPs放在一个不同的目录下 面。<br>
<br>
<strong>使用</strong><strong>IDE</strong><strong>，ANT</strong><strong>及其他的一些自动工具</strong><br>
IDEs可以加速开发和部署的时间，并且减少书写以及其他的一些错误。有许多的IDE工具提供了J2EE工具和向导。这些工具同样同一些框架相集成（如Struts和JSTL标签库）。<br>
Ant是defacto标准的创建和部署java和j2ee应用的工具。Ant提供了创建和部署应用时很多有用的特性，同样也支持创建和部署war以及 ear文件。许多工具内嵌支持Ant。当不能使用IDEs时，我任务Ant时必不可少的。其他一些工具也可能支持自动创建和部署，也能提供ant提供的特 性，但是ant一个最重要的特点就在于它的费用（免费）以及它支持很广泛。<br>
同样我推荐Apache的Apache Maven，在考虑管理整个java项目时它也是一个很有用的产品。 bitsCN_com关注网管是我们的使命 <br>
<br>
<strong>重新考虑与规范不相容（</strong><strong>nonspecification-compliant</strong><strong>）的特性</strong><br>
Web Server偶尔会提供一些与供应商特定(vendor-specific)的特性，这些特性在开发时非常有用，可以提高性能、安全以及其他一些特性。在
有些情况下，使用这些与供应商相关(vendor-specific)的特性是合理的，因为它所带来的优点远远的超过了其所可能蕴涵的危险。然而你需要意 识到使用与供应商特定的特性时所蕴含的危险，因此在同样的情况下应该优先的考虑使用和规范相容的特性。记住,并不是所以的特性都是按照规范而&#8220;呼唤&#8221;出来 的，在这种情况下，任何一个供应商的实现都是私有的。<br>
技术的依赖并不总是使得供应商特点的特性蕴含危险。特定的Web
servers供应商提供的自定义标签库可能在所有的支持自定义标签的Web
server都可以使用，这种情况下你需要注意的是版权（licensing
issues）问题了。<br>
最佳实践（best practice）依赖与变换Web servers的可能性。当我不使用tomcat做为web server时，我通常会在其他别的web servers上面部署基于j2ee的网络应用来检验规范的相容性。需要记住的一点是，即使你一直使用一种web
server，随着时间的发展，使用供应商特定的特性也存在危险。因为j2ee规范不断的进步，在某一个特定的供应商以他们特有的方式实现了一定的特性的 时候，j2ee规范可能就会以一种标准的形式来定义这个特性。这种情况下，这个供应商就会转向这个同一的标准。 play.bitsCN.com累了吗玩一下吧 <br>
<br>
<strong>使用</strong><strong>XHTML</strong><strong>语法</strong><br>
在&#8220;JSP Best Practices&#8221;中，我推荐在JSPs中使用HTML的最佳实践（best
pratices）。更近一步，我发现在创建JSP document．XHTML规范提供很有用的HTML标签语法（I
now find that the XHTML specification offers the most useful version of HTML
tag syntax in authoring JSP document．），XHTML使得更容易的来创建XML相容的JSP document．甚至JSPs
page的作者也发现了在JSPs中使用XHTML是有好处的。<br>
因为完全的XML相容，XHTML语法比
HTML遵守个严格的规则。标准的HTML和XHTML标签的不同见：World Wide Web Consortium's XHTML 1.0 pages.（http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp-
p4.html#resources.）<br>
<br>
<strong>只能做的更好（</strong><strong>It only gets
better</strong><strong>）</strong><br>
JSP技术是用来简化灵活的web开发的。近来产生JSTL技术延续了这一趋势。甚至servlet方面规范的进步也大大的方便了JSP的开发。JSP和 servlet规范的进步、一些新的工具的产生、JSP编码标准的共享都使得高可维护的JSP的开发比以前更加的容易。</p>
<br> <img src ="http://www.cnitblog.com/damon/aggbug/35390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/damon/" target="_blank">专心练剑</a> 2007-10-26 13:34 <a href="http://www.cnitblog.com/damon/articles/35390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>