24/04/2006

C/C++ 資源

Links:

  • JDBC in C++: a commercial product which provides the functionality to use JDBC in C++. Have a look(none open-source).
  • Loki C++ Library: Loki is a C++ library which demonstrates and encourages the use of generic programming and designe patterns. It was written to accompany the book entitled 'Modern C Design.' The library includes a parametrized smart pointer class, generalized functors, a multithreading abstraction, and some help for important patterns.
  • OpenTop: Cross-Platform C++: OpenTop is a radically new C class library that provides the means to create powerful and robust network-oriented applications and greatly simplifies their development.

    At its core, OpenTop contains framework classes that provide vital facilities that are absent from the C standard library. These include:

    • Networking
    • Unicode
    • Multi-threading
    • Memory and resource management
  • The Boost C Libraries: C++ libraries for boost your performances.
  • Log for C++: Log4cpp is library of C classes for flexible logging to files, syslog, IDSA and other destinations. It is modeled after the Log4j Java library, staying as close to their API as is reasonable.
  • ACE Overview: The ADAPTIVE Communication Environment (ACE) is a freely available, open-source object-oriented (OO) framework that implements many core patterns for concurrent communication software. ACE provides a rich set of reusable C wrapper facades and framework components that perform common communication software tasks across a range of OS platforms. The communication software tasks provided by ACE include event demultiplexing and event handler dispatching, signal handling, service initialization, interprocess communication, shared memory management, message routing, dynamic (re)configuration of distributed services, concurrent execution and synchronization.
  • Crypto Library 5.1 - a Free C Class Library of Cryptographic Schemes: Crypto Library is a free C class library of cryptographic schemes.
  • nn-utility: THE AIM OF THE NN-UTILITY project is to create a neural network library that takes care of the tedious programming of networks in object oriented C . The library makes the creation of network topologies and weight definitions very easy. The library also has some default functions, making the programming of sigmoid, kohen, binomial, and radial basis functions simple. On top of this the library is composed of some accessories, like simple bitmap creators and readers, enabling networks to be trained with bitmaps.
  • IT++: A C++ library of mathematical, signal processing, speech processing, and communications classes and functions. It has been developed by researchers in these areas. The kernel of the package are templated vector and matrix classes and lots of functions for vectors and matrices. As such the kernel is similar to the Matlab functions.

09/09/2004

Java: Draw, Plot, Graph, Chart and Report

Draw

  • G: G is a generic graphics library built on top of Java 2D in order to make scene graph oriented 2D graphics available to client applications in a high level, easy to use way.
Plot
  • Plotlib Toolkit: The Plotlib Toolkit is a library of classes designed for plotting and printing mathematical functions and statistical data using the Java2D-APIs of Java 2.
  • Ptplot - 2D data plotter and histogram tool implemented in Java. Ptplot can be used as a standalone applet or application, or it can be embedded in your own applet or application. [Open Source]
Graph
  • JGraph: JGraph is the leading open source Java Graph visualization library featuring a powerful array of graphical and algorithmic functionality. You can download and start using JGraph right now with the backup of an active community and freely available documentation and knowledge base.
    • Very Good looking. -- Edward.
  • JHotDraw: JHotDraw is a Java GUI framework for technical and structured Graphics. It has been developed as a "design exercise" but is already quite powerful. Its design relies heavily on some well-known design patterns. JHotDraw's original authors have been Erich Gamma and Thomas Eggenschwiler.
  • GEF - Graph Editing Framework: Class library for constructing graph/diagram editing applications. [Open Source, Apache]
  • HyperGraph - A Swing based API to visualise graphs using hyperbolic geometry (hyperbolic trees). Example applet povided. [Open source, GPL]
  • Mica: Mica is a modern object-oriented 2D graphics library written in Java with a heavy emphasis on ease of use, high-level of functionality and the ability to mix common user-interface widgets with not so common widgets and graphs. Mica is distributed under an Open Source software license from Software Farm.
Chart
  • JUNG - Java Universal Network/Graph Framework: JUNG — the Java Universal Network/Graph Framework--is a software library that provides a common and extendible language for the modeling, analysis, and visualization of data that can be represented as a graph or network. It is written in Java, which allows JUNG-based applications to make use of the extensive built-in capabilities of the Java API, as well as those of other existing third-party Java libraries.
  • Java Chart Construction Kit (JCCKit): "The main purpose is to provide a flexible kit for writing Java applets and application with the need for visualizing scientific data. If you are looking for a lean scientific chart and plot library without all the unwanted bells and whistles of the heavy competitors try JCCKit."
  • JFreeChart: JFreeChart supports pie charts (2D and 3D), bar charts (horizontal and vertical, regular and stacked), line charts, scatter plots, time series charts, high-low-open-close charts, candlestick plots, Gantt charts, combined plots, thermometers, dials and more. JFreeChart can be used in applications, applets, servlets and JSP. This project is maintained by David Gilbert.
  • JOpenChart: JOpenChart is an open source Java library and toolkit for creating different kinds of charts and embedding them into web applications or Swing applications. It further supports interpolating data and plotting mathematical functions etc. pp.
  • jCharts: jCharts is a 100% Java based charting utility that outputs a variety of charts. This package has been designed from the ground up by volunteers for displaying charts via Servlets, JSP's, and Swing apps. See also:
    • XmlCharts: XmlCharts is an easy way to configure and draw charts from XML. XmlCharts is based on jCharts and provides:
      • An XML record set to define all the basics properties of the chart (colors, strokes, fonts, shapes, legend etc..) [see the XML style record set description].
      • An XML record set to define charts [see the XML chart record set description].
      • An XML record set to define data [see the XML data record set description].
  • Chart2D: Chart2D is a Java class library for visualizing data using two-dimensional graphical "objects". The library is named Chart2D because it provides charts such as Pie Charts and Graph Charts. Using Chart2D requires gaining some knowledge of Java and Swing in particular.
  • Cewolf - Chart Enabling Web Object Framework: Cewolf can be used inside a Servlet/JSP based web application to embed complex graphical charts of all kinds (e.g. line, pie, bar chart, plots, etc.) into a web page. Therefore it provides a full featured tag library to define all properties of the chart (colors, strokes, legend, etc.). Thus the JSP which embedds the chart is not polluted with any java code. Everything is described with XML conform tags.
Report
  • JFreeReport: FreeReport is a free Java report library. It has the following features:
    • full on-screen print preview;
    • data obtained via Swing's TableModel interface (making it easy to print data directly from your application);
    • XML-based report definitions;
    • output to the screen, printer or various export formats (PDF, HTML, CSV, Excel, plain text);
    • support for servlets (uses the JFreeReport extensions)
    • complete source code included (subject to the GNU Lesser General Public Licence);
    • extensive source code documentation;
    JFreeReport requires Java SDK 1.2.2 or later.
  • JasperReports: JasperReports is a powerful open source Java reporting tool that has the ability to deliver rich content onto the screen, to the printer or into PDF, HTML, XLS, CSV and XML files. See also:
    • iReport: iReport is a powerful, intuitive and easy to use visual report builder/designer for JasperReports written in 100% pure java. This tool allows users to visually edit complex reports with charts, images, subreports,.... iReport is integrated with JFreeChart, one of the most diffused OpenSource chart library for java. The data to print can be retrieved through several ways including multiple JDBC connections, TableModels, JavaBeans, XML, etc...
    • OpenReports: OpenReports is a web based reporting application that allow users to generate dynamic reports in a browser and view them as PDF, XLS, or CSV files. The goal of OpenReports is to provide a web based reporting solution built upon open source technologies that will compete against complex and expensive reporting tools such as Crystal Reports and Cognos.
  • DataVision: DataVision is an Open Source reporting tool similar to Crystal Reports. Reports can be designed using a drag-and-drop GUI. They may be run, viewed, and printed from the application or exported as HTML, XML, PDF, LaTeX2e, DocBook, or tab- or comma-delimited text files. The output files produced by LaTeX2e and DocBook can in turn be used to produce PDF, text, HTML, PostScript, and more.

22/08/2004

Java: Java and XML

Java 在 XML API 上也有很好的支援,除了有來自標準規範、神奇的傑克家族(JAXP、JAXB、JAXR...)可用,Third Party 廠商在這方面的支援也是不遑多讓,如 Jdom, Dom4j...

XML Processing API:

  • JDom
  • XOM: Here is a introduction of XOM.
  • JRom from IBM: means Java Record Object Model
  • XMLPull API
    • Home page of XML Pull Parser (XPP): Xml Pull Parser (in short XPP) is a streaming pull XML parser and should be used when there is a need to process quickly and efficiently all input elements (for example in SOAP processors). Pull parsing is just one level up from tokenizing XML (and that is actually how XPP2 default implementation is done). This means that XPP is representing the simplest way of processing XML that you can get (working with tokenizer would be even lower level but is not simple and most of applications would be much more complex to extract useful information from XML tokens ...). With XPP pull parser it is easy to build a next layer on top of it such as standard SAX2 push model (a prototype SAX2 driver for XPP2 is available). Every SAX2 parser has a tokenizer and a pull interface buried inside and XPP2 exposes this layer allowing for faster XML processing - and that is what I wanted to achieve in XPP2 and what makes this project interesting :-)
    • XML Pull Parsing Common API: It is a minimalist API: very easy to implement standalone or on top of existing parser. The API allows both fast high level iteration (using next() method) and low level tokenizing (using nextToken() token) and is designed for easy building on top of it SAX, XML pull parsers that uses iterators with event objects, or even DOM implementations. To to support J2ME and real small implementation parsing of DOCDECL is optional (but DOCDECL can be reported if requested).
    • kObjects.org: kXML 2: "kXML 2 is a small XML pull parser, specially designed for constrained environments such as Applets, Personal Java or MIDP devices. In contrast to kXML 1, kXML 2 is based on the common XML pull API"
  • Apache Xalan: XPath & XSLT Processor
  • Apache XTags: Base on Dom4j
  • JAXP from Sun: Java XML Pack, 內建W3C XML Schema Language支援, 包括:
    • Java API for XML Processing (JAXP)
    • Java API for XML Messaging (JAXM)
    • Java API for XML Registries (JAXR)
    • Java API for XML-based RPC (JAX-RPC)
    • SOAP with Attachments API for Java (SAAJ)
    • JavaServer Pages Standard Tag Library (JSTL)
    • Xalan-J
    • XSLTC
    • Xerces-J
    • Java Architecture for XML Binding (JAXB)
    是不是很可觀啊?
API 效能評比
XML-Java binding tool Java XML Client
  • Jaxe: Jaxe, your XML editor
XQL API
  • XCool: XCool is a XQL (XML Query Language) implementation in Java. It consists of an engine which executes queries upon a XML file and can be accessed both programatically and in command line mode.

14/08/2004

Java: Utitity Library

  • eXtensible and fleXible Library: XXL is a Java library that contains a rich infrastructure for implementing advanced query processing functionality. The library offers low-level components like access to raw disks as well as high-level ones like a query optimizer. On the intermediate levels, XXL provides a demand-driven cursor algebra, a framework for indexing and a powerful package for supporting aggregation. The XXL project provides various packages. See the longer introduction to XXL for an explanation of the packages. The library is publicly available under GNU LGPL and comes with a full documentation.
  • JUTIL.ORG Project Home Open Source Java Utilities For The Professional...: The org.jutil project is professional quality collection of java utility code, with full documentation and test cases for all code.
  • com.Ostermiller.util: Java utilities such as CSV reader/writer, Base64, Circular Buffers, Concatenation Streamsormat, MD5 Sums and so on.
  • Pow2ACL site - Pow2ACL Overview: "Pow2ACL is a java package that implements an access control list security system (ACL). An ACL stores informations about application users, their roles and the roles permissions. Having those informations, a multi-user application can test"
  • Code Generation Library - Code Generation Library: "cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime. See samples and API documentation to learn more about features."
  • Configure Library:
    • jConfig: "jConfig is an extremely helpful utility, arming the developer with a simple API for the management of properties."
    • JFig: "A Configuration utility that provides simple, flexible and powerful functionality for managing one or more configurations in a java environment. It uses a combination of a hierarchy of configuration files, substitution variables and property variables."

20/05/2004

Java: Core GUI Library

  • Zaval Light-Weight Visual Components Library: "Zaval Light-Weight Visual Components Library (LwVCL) is a pure Java alternative to humble AWT-based GUI interfaces for wide ranges of platforms, including J2SE, PersonalJava and J2ME(coming soon).

    Designed as light-weight but built separately from AWT (not on top of the java.awt library like Swing), the LwVCL is the good alternative to highly performant, memory-efficient, flexible GUI solution for embedded, stand-alone and applet applications"

  • java application programming interface. A FUNNY Library. It open the functionalities of Java AWT to other lanaguages

  • See also: Eclipse SWT, SwingWT and of course Swing.