|
Posted
over 12 years
ago
If you’re debugging an application that loads thousands of shared libraries then be sure to read the LinkerInterface page on the GDB wiki.
|
|
Posted
over 12 years
ago
Today I released JFreeSVG 1.4 and JCommon 1.0.21 to improve the quality of text rendering when generating charts in SVG format with JFreeChart. Rather than the usual screenshot, here's the SVG output for one of the sample charts:
Projected
... [More]
Values - TestSeries 1Series 2Nov-2013Jan-2014Mar-2014May-2014Jul-2014Sep-2014Date9293949596979899100101102103104105106Index Projection
If the chart doesn't render well for you, please let me know the browser and system you are using, because I'm interested. [Less]
|
|
Posted
over 12 years
ago
I didn’t write about Shenandoah in a while. We first needed to clear up some issues around it, which is done now. The project is not dead yet, quite the contrary, we’re working feverishly. Just now, we are about concurrent evacuation to work
Last
... [More]
time I wrote about concurrent marking. Before I carry on, I want to introduce a new concept: Brooks pointers. The idea is that each object on the heap has one additional reference field. This field either points to the object itself, or, as soon as the object gets copied to a new location, to that new location. This will enable us to evacuate objects concurrently with mutator threads (how exactly this is done is a topic for a separate post).
One problem of course is that as soon as we have two copies of an object (one in from-space, one in to-space), we need to be careful to maintain consistency. This means that any changes to objects must happen in the to-space copy. This is achieved by putting barriers in various places (everything that writes to objects, or runtime code that uses objects) that resolve the object before writing into it or using it. If we don’t do that, we might end up with some threads using the old copy, and some threads using the new copy, which is, obviously, a problem. The barrier simply reads the brooks pointer field and returns the forwarded object to any code that uses it. In terms of machine code instructions, this means one additional read instruction for each write operation into the heap (and some read operations by the runtime). Infact, we currently need two instructions, the reason for which I’ll explain later.
Eventually, when evacuation is done, we need to somehow update all references to objects to point to the to-space locations. We do that by piggy-backing on the concurrent marking phase. When we traverse the heap for marking, we see all live objects and references, and whenever we visit an object, we update all its object references to point to the new locations of the referents.
There’s two tradeoffs with using brooks pointers: we need more heap space (ideally, one word per object), and we need more instructions to read and write objects.
Next time, I’ll start explaining how concurrent evacuation works.
Because there have been many requests: yes, Shenandoah will be open source. Our plan is to propose a JEP as soon as we can, and make it an OpenJDK project if possible.
[Less]
|
|
Posted
over 12 years
ago
The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools, along with additional features such as a PulseAudio sound driver, the ability to build against system libraries and support for alternative
... [More]
virtual machines and architectures beyond those supported by OpenJDK.
This release updates our OpenJDK 7 support in the 2.4.x series with a number of security fixes and synchronises it with the upstream u45 b31 tag.
Existing users of the 2.3.x series are strongly advised to upgrade to the 2.4.x series. Although there will be a 2.3.x update, one security issue (CVE-2013-5838) is resolved by the JSR292 rewrite (S7023639) which is present in the 2.4.x series, but not 2.3.x. It may or may not be possible to backport this for the Zero port, but the safest solution is to use 2.4.x where possible.
If you find an issue with the release, please report it to our bug database under the appropriate component. Development discussion takes place on the distro-pkg-dev OpenJDK mailing list and patches are always welcome.
Full details of the release can be found below.
What’s New?
New in release 2.4.3 (2013-10-21)
Security fixes
S8006900, CVE-2013-3829: Add new date/time capability
S8008589: Better MBean permission validation
S8011071, CVE-2013-5780: Better crypto provider handling
S8011081, CVE-2013-5772: Improve jhat
S8011157, CVE-2013-5814: Improve CORBA portablility
S8012071, CVE-2013-5790: Better Building of Beans
S8012147: Improve tool support
S8012277: CVE-2013-5849: Improve AWT DataFlavor
S8012425, CVE-2013-5802: Transform TransformerFactory
S8013503, CVE-2013-5851: Improve stream factories
S8013506: Better Pack200 data handling
S8013510, CVE-2013-5809: Augment image writing code
S8013514: Improve stability of cmap class
S8013739, CVE-2013-5817: Better LDAP resource management
S8013744, CVE-2013-5783: Better tabling for AWT
S8014085: Better serialization support in JMX classes
S8014093, CVE-2013-5782: Improve parsing of images
S8014098: Better profile validation
S8014102, CVE-2013-5778: Improve image conversion
S8014341, CVE-2013-5803: Better service from Kerberos servers
S8014349, CVE-2013-5840: (cl) Class.getDeclaredClass problematic in some class loader configurations
S8014530, CVE-2013-5825: Better digital signature processing
S8014534: Better profiling support
S8014987, CVE-2013-5842: Augment serialization handling
S8015614: Update build settings
S8015731: Subject java.security.auth.subject to improvements
S8015743, CVE-2013-5774: Address internet addresses
S8016256: Make finalization final
S8016653, CVE-2013-5804: javadoc should ignore ignoreable characters in names
S8016675, CVE-2013-5797: Make Javadoc pages more robust
S8017196, CVE-2013-5850: Ensure Proxies are handled appropriately
S8017287, CVE-2013-5829: Better resource disposal
S8017291, CVE-2013-5830: Cast Proxies Aside
S8017298, CVE-2013-4002: Better XML support
S8017300, CVE-2013-5784: Improve Interface Implementation
S8017505, CVE-2013-5820: Better Client Service
S8019292: Better Attribute Value Exceptions
S8019617: Better view of objects
S8020293: JVM crash
S8021275, CVE-2013-5805: Better screening for ScreenMenu
S8021282, CVE-2013-5806: Better recycling of object instances
S8021286: Improve MacOS resourcing
S8021290, CVE-2013-5823: Better signature validation
S8022931, CVE-2013-5800: Enhance Kerberos exceptions
S8022940: Enhance CORBA translations
S8023683: Enhance class file parsing
Backports
S6614237: missing codepage Cp290 at java runtime
S8005932: Java 7 on mac os x only provides text clipboard formats
S8014046: (process) Runtime.exec(String) fails if command contains spaces [win]
S8015144: Performance regression in ICU OpenType Layout library
S8015965: (process) Typo in name of property to allow ambiguous commands
S8015978: Incorrect transformation of XPath expression “string(-0)”
S8016357: Update hotspot diagnostic class
S8019584: javax/management/remote/mandatory/loading/MissingClassTest.java failed in nightly against jdk7u45: java.io.InvalidObjectException: Invalid notification: null
S8019969: nioNetworkChannelInet6/SetOptionGetOptionTestInet6 test case crashes
S8020032: 7u fastdebug doesn’t generate fastdebuginfo file
S8020085: Linux ARM build failure for 7u45
S8020088: Increment minor version of HSx for 7u45 and initialize the build number
S8020551: increment hsx build to b03 for 7u45-b03
S8020943: Memory leak when GCNotifier uses create_from_platform_dependent_str()
S8021287: Improve MacOS resourcing
S8021355: REGRESSION: Five closed/java/awt/SplashScreen tests fail since 7u45 b01 on Linux, Solaris
S8021360: object not exported” on start of JMXConnectorServer for RMI-IIOP protocol with security manager
S8021366: java_util/Properties/PropertiesWithOtherEncodings fails during 7u45 nightly testing
S8021577: JCK test api/javax_management/jmx_serial/modelmbean/ModelMBeanNotificationInfo/serial/index.html#Input has failed since jdk 7u45 b01
S8021899: Re-adjust fix of # 8020498 in 7u45 after mergeing 7u40
S8021901: Increment hsx build to b05 for 7u45-b05
S8021933: Add extra check for fix # JDK-8014530
S8021969: The index_AccessAllowed jnlp can not load successfully with exception thrown in the log.
S8022066: Evaluation of method reference to signature polymorphic method crashes VM
S8022086: Fixing licence of newly added files
S8022254: Remove incorrect jdk7u45-b05 tag from jdk7u-cpu forest
S8022661: InetAddress.writeObject() performs flush() on object output stream
S8022682: Supporting XOM
S8022808: Kitchensink hangs on macos
S8022856: 7u45 l10n resource file translation update
S8023323: Increment hsx build to b06 for 7u45-b08
S8023457: Event based tracing framework needs a mutex for thread groups
S8023478: Test fails with HS crash in GCNotifier.
S8023741: Increment hsx 24.45 build to b07 for 7u45-b09
S8023771: when USER_RELEASE_SUFFIX is set in order to add a string to java -version, build number in the bundles names should not be changed to b00
S8023888: Increment hsx 24.45 build to b08 for 7u45-b10
S8023964: java/io/IOException/LastErrorString.java should be @ignore-d
S8024369: Increment build # of hs24.0 to b57 for 7u40-b61 psu
S8024668: api/java_nio/charset/Charset/index.html#Methods JCK-runtime test fails with 7u45 b11
S8024697: Fix for 8020983 causes Xcheck:jni warnings
S8024863, PR1400: X11: Support GNOME Shell as mutter
S8024883, RH1011051: (se) SelectableChannel.register throws NPE if fd >= 64k (lnx)
S8025128: File.createTempFile fails if prefix is absolute path
S8025170: jdk7u51 7u-1-prebuild is failing since 9/19
Bug fixes
PR1400: Menu of maximized AWT window not working in Mate
The tarball can be downloaded from:
http://icedtea.classpath.org/download/source/icedtea-2.4.3.tar.gz
or:
http://icedtea.classpath.org/download/source/icedtea-2.4.3.tar.xz
For the first time, we provide both gzip and xz tarballs, so that those who are able to make use of the smaller tarball produced by xz may do so.
The tarballs are accompanied by digital signatures available at:
http://icedtea.classpath.org/download/source/icedtea-2.4.3.tar.gz.sig
http://icedtea.classpath.org/download/source/icedtea-2.4.3.tar.xz.sig
These are produced using my public key. See details below.
PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07
SHA256 checksums:
15b1acc1fb43b83ca08d531491261c5eeaea4cad3598300074692acea93bdd3d icedtea-2.4.3.tar.gz
f9e5c9684432340606d92dd65117f02301250b7757e02ab42d9049296e260367 icedtea-2.4.3.tar.gz.sig
9289d25867b39756d62ba16eda5834655609a6962e0eaf2edacc04e3b629c806 icedtea-2.4.3.tar.xz
94914ad7af3a87246e5212dc6789206c438ea1356dce44ade54ef420983f2e01 icedtea-2.4.3.tar.xz.sig
The following people helped with these releases:
Andrew Hughes (OpenJDK synchronisation, all other fixes & release management)
Omair Majid (S8024863)
We would also like to thank the bug reporters and testers!
To get started:
$ tar xzf icedtea-2.4.3.tar.gz
or:
$ tar x -I xz -f icedtea-2.4.3.tar.xz
then:
$ mkdir icedtea-build
$ cd icedtea-build
$ ../icedtea-2.4.3/configure
$ make
Full build requirements and instructions are available in the INSTALL file.
Happy hacking! [Less]
|
|
Posted
over 12 years
ago
I started experimenting with Emacs’s SVG capabilities and ended up writing a game. Presenting:
Emacs Slime Volleyball!
It’s a clone of the great Slime Volleyball applet I used for IcedTeaPlugin testing.
Try it out!
|
|
Posted
over 12 years
ago
My friends at Oracle seem determined to make me finish my infinite series of blogpostsofJavamethodoverriding.
Before the 7u45
security update the following (pseudo) code ran fine:
class A {
... [More]
final void m() { }
}
class B extends A {
private void m() { }
}
Now with 7u45, loading class B throws an exception:java.lang.VerifyError: class B overrides final method m.()V
This makes no
sense at all and is a misguided
attempt to fix the issue I reported here.
Ironically, it doesn't even completely fix the issue, because a static finalize method
still prevents the final finalizer from running:
class A {
protected void finalize() {
System.out.println("A.finalize");
}
}
class B extends A {
public static void main(String[] args) {
new B();
System.gc();
System.runFinalization();
}
private static void finalize() { }
}
Pre-emptive comment about comments: Feel free to leave comments, but I'm not going
to respond to people that clearly don't have a clue.
[Less]
|
|
Posted
over 12 years
ago
The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools, along with additional features such as a PulseAudio sound driver, the ability to build against system libraries and support for alternative
... [More]
virtual machines and architectures beyond those supported by OpenJDK.
This release updates our OpenJDK 7 support in the 2.4.x series with a number of bug fixes and synchronises it with the upstream u40 b60 tag.
If you find an issue with the release, please report it to our bug database under the appropriate component. Development discussion takes place on the distro-pkg-dev OpenJDK mailing list and patches are always welcome.
Full details of the release can be found below.
What’s New?
New in release 2.4.2 (2013-09-20)
System LCMS 2 support again enabled by default, requiring 2.5 or above.
OpenJDK
S7122222: GC log is limited to 2G for 32-bit
S7162400: Intermittent java.io.IOException: Bad file number during HotSpotVirtualMachine.executeCommand
S7165807: Non optimized initialization of NSS crypto library leads to scalability issues
S7199324: IPv6: JMXConnectorServer.getConnectionIDs() return IDs contradicting to address grammar
S8001345: VM crashes with assert(n->outcnt() != 0 || C->top() == n || n->is_Proj()) failed: No dead instructions after post-alloc
S8001424: G1: Rename certain G1-specific flags
S8001425: G1: Change the default values for certain G1 specific flags
S8004859: Graphics.getClipBounds/getClip return difference nonequivalent bounds, depending from transform
S8005019: JTable passes row index instead of length when inserts selection interval
S8005194: [parfait] #353 sun/awt/image/jpeg/imageioJPEG.c Memory leak of pointer ‘scale’ allocated with calloc()
S8006941: [macosx] Deadlock in drag and drop
S8007898: Incorrect optimization of Memory Barriers in Matcher::post_store_load_barrier()
S8009168: accessibility.properties syntax issue
S8009985: [parfait] Uninitialised variable at jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c
S8011064: Some tests have failed with SIGSEGV on arm-hflt on build b82
S8011569: ARM — avoid native stack walking
S8011760: assert(delta != 0) failed: dup pointer in MemBaseline::malloc_sort_by_addr
S8012144: multiple SIGSEGVs fails on staxf
S8012156: tools/javac/file/zip/T6865530.java fails for win32/64
S8012241: NMT huge memory footprint, it usually leads to OOME
S8012366: Fix for 8007815 breaks down when only building OpenJDK (without deploy and install forests)
S8013546: compiler/8011901/Test8011901.java fails with CompilationError: Compilation failed
S8013719: Increment build # of hs23.21 to b02
S8013791: G1: G1CollectorPolicy::initialize_flags() may set min_alignment > max_alignment
S8014264: The applet pathguy_TimeDead throws java.lang.NullPointerException in java console once click drop-down check box.
S8014312: Fork hs23.25 hsx from hs23.21 for jdk7u25 and reinitialize build number
S8014805: NPE is thrown during certpath validation if certificate does not have AuthorityKeyIdentifier extension
S8014850: Third Party License Readme updates for 7u40
S8014925: Disable sun.reflect.Reflection.getCallerClass(int) with a temporary switch to re-enable it
S8015237: Parallelize string table scanning during strong root processing
S8015411: Bump the hsx build number for 7u21-b50 for customer
S8015441: runThese crashed with assert(opcode == Op_ConP || opcode == Op_ThreadLocal || opcode == Op_CastX2P ..) failed: sanity
S8015576: CMS: svc agent throws java.lang.RuntimeException: No type named “FreeList” in database
S8015668: overload resolution: performance regression in JDK 7
S8015884: runThese crashed with SIGSEGV, hs_err has an error instead of stacktrace
S8016074: NMT: assertion failed: assert(thread->thread_state() == from) failed: coming from wrong thread state
S8016102: Increment build # of hs23.25 to b02 for 7u25-b31 psu
S8016131: nsk/sysdict/vm/stress/chain tests crash the VM in ‘entry_frame_is_first()’
S8016133: Regression: diff. behavior with user-defined SAXParser
S8016157: During CTW: C2: assert(!def_outside->member(r)) failed: Use of external LRG overlaps the same LRG defined in this block
S8016331: Minor issues in event tracing metadata
S8016648: FEATURE_SECURE_PROCESSING set to true or false causes SAXParseException to be thrown
S8016734: Remove extra code due to duplicated push
S8016737: After clicking on “Print UNCOLLATED” button, the print out come in order ‘Page 1′, ‘Page 2′, ‘Page 1′
S8016740: assert in GC_locker from PSOldGen::expand with -XX:+PrintGCDetails and Verbose
S8016767: Provide man pages generated from DARB for OpenJDK
S8017070: G1: assert(_card_counts[card_num] <= G1ConcRSHotCardLimit) failed
S8017159: Unexclude sun/tools/JMAP/Basic.sh test
S8017173: XMLCipher with RSA_OAEP Key Transport algorithm can’t be instantiated
S8017174: NPE when using Logger.getAnonymousLogger or LogManager.getLogManager().getLogger
S8017189: [macosx] AWT program menu disabled on Mac
S8017252: new hotspot build – hs24-b51
S8017478: Kitchensink crashed with SIGSEGV in BaselineReporter::diff_callsites
S8017483: G1 tests fail with native OOME on Solaris x86 after HeapBaseMinAddress has been increased
S8017510: Add a regression test for 8005956
S8017566: Backout 8000450 – Cannot access to com.sun.corba.se.impl.orb.ORBImpl
S8017588: SA: jstack -l throws UnalignedAddressException while attaching to core file for java that was started with CMS GC
S8019155: Update makefiles with correct jfr packages
S8019201: Regression: java.awt.image.ConvolveOp throws java.awt.image.ImagingOpException
S8019236: [macosx] Add javadoc to the handleWindowFocusEvent in CEmbeddedFrame
S8019265: [macosx] apple.laf.useScreenMenuBar regression comparing with jdk6
S8019298: new hotspot build – hs24-b52
S8019381: HashMap.isEmpty is non-final, potential issues for get/remove
S8019541: 7u40 l10n resource file translation update
S8019587: [macosx] Possibility to set the same frame for the different screens
S8019625: Test compiler/8005956/PolynomialRoot.java timeouts on Solaris SPARCs
S8019628: [macosx] closed/java/awt/Modal/BlockedMouseInputTest/BlockedMouseInputTest.html failed since 7u40b30 on MacOS
S8019826: Test com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java fails with NPE
S8019933: new hotspot build – hs24-b53
S8019979: Replace CheckPackageAccess test with better one from closed repo
S8020038: [macosx] Incorrect usage of invokeLater() and likes in callbacks called via JNI from AppKit thread
S8020054: (tz) Support tzdata2013d
S8020155: PSR:PERF G1 not collecting old regions when humongous allocations interfer
S8020215: Different execution plan when using JIT vs interpreter
S8020228: Restore the translated version of logging_xx.properties
S8020298: [macosx] Incorrect merge in the lwawt code
S8020319: Update Japanese man pages for 7u40
S8020371: [macosx] applets with Drag and Drop fail with IllegalArgumentException
S8020381: new hotspot build – hs24-b54
S8020425: Product options incorrectly removed in minor version
S8020430: NullPointerException in xml sqe nightly result on 2013-07-12
S8020433: Crash when using -XX:+RestoreMXCSROnJNICalls
S8020498: Crash when both libnet.so and libmawt.so are loaded
S8020525: Increment build # of hs23.25 to b03 for 7u25-b34 psu
S8020547: Event based tracing needs a UNICODE string type
S8020625: [TESTBUG] java/util/HashMap/OverrideIsEmpty.java doesn’t compile for jdk7u
S8020701: Avoid crashes in WatcherThread
S8020796: new hotspot build – hs24-b55
S8020811: [macosx] Merge fault 7u25-7u40: Missed focus fix JDK-8012330
S8020940: Valid OCSP responses are rejected for backdated enquiries
S8020983: OutOfMemoryError caused by non garbage collected JPEGImageWriter Instances
S8021008: Provide java and jcmd man pages for Mac (OpenJDK)
S8021148: Regression in SAXParserImpl in 7u40 b34 (NPE)
S8021353: Event based tracing is missing thread exit
S8021381: JavaFX scene included in Swing JDialog not starting from Web Start
S8021565: new hotspot build – hs24-b56
S8021771: warning stat64 is deprecated – when building on OSX 10.7.5
S8021946: Disabling sun.reflect.Reflection.getCallerCaller(int) by default breaks several frameworks and libraries
S8022548: SPECJVM2008 has errors introduced in 7u40-b34
S8023751: Need to backout 8020943, was pushed to hs24 without approval
S8024914: Swapped usage of idx_t and bm_word_t types in bitMap.inline.hpp
New features
RH991170: java does not use correct kerberos credential cache
PR1536: Allow use of system Kerberos to obtain cache location
PR1551: Add build support for Zero AArch64
PR1552: Add -D_LITTLE_ENDIAN for ARM architectures.
PR1553: Add Debian AArch64 support
PR1554: Fix build on Mac OS X
Bug fixes
RH661505: JPEGs with sRGB IEC61966-2.1 color profiles have wrong colors
RH995488: Java thinks that the default timezone is Busingen instead of Zurich
Cleanup file resources properly in TimeZone_md.
PR1410: Icedtea 2.3.9 fails to build using icedtea 1.12.4
G477456: emerge fails on pax system: java attempts RWX map, paxctl -m missing
G478484: patches/boot/ecj-diamond.patch FAILED
Fix Zero following changes to entry_frame_call_wrapper in 8016131
RH1008988: Set ZERO_BUILD in flags.make so it is set on rebuilds
Cast should use same type as GCDrainStackTargetSize (uintx).
Add casts to fix build on S390
JamVM
JSR292: Invoke Dynamic
sun.misc.Unsafe: additional methods get/putAddress: allows JamVM with OpenJDK 7/8 to run recent versions of JEdit.
FreeClassData: adjust method count for Miranda methods
The tarball can be downloaded from:
http://icedtea.classpath.org/download/source/icedtea-2.4.2.tar.gz
or:
http://icedtea.classpath.org/download/source/icedtea-2.4.2.tar.xz
For the first time, we provide both gzip and xz tarballs, so that those who are able to make use of the smaller tarball produced by xz may do so.
The tarballs are accompanied by digital signatures available at:
http://icedtea.classpath.org/download/source/icedtea-2.4.2.tar.gz.sig
http://icedtea.classpath.org/download/source/icedtea-2.4.2.tar.xz.sig
These are produced using my public key. See details below.
PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07
SHA256 checksums:
3dab1edc5c0391bd67cfac60cbfb5c91aee6ea9726043252d9f216dfafd236b6 icedtea-2.4.2.tar.gz
aeb1307d2d140805fcc23f05ad96eb1eb41655c14cdece404316978b149aee7a icedtea-2.4.2.tar.gz.sig
8c1edd97b8e7103f0345f0a561cec4f37c77d2016d81c66482bc657cfa14b754 icedtea-2.4.2.tar.xz
4d15428e91980519a7e225c638a3747f9c6c3a909d98db9ef557dc24477c1801 icedtea-2.4.2.tar.xz.sig
The following people helped with these releases:
Elliott Baron (RH991170)
Dan Horák (S390 support)
Andrew Hughes (OpenJDK synchronisation, all other fixes & release management)
Alex Kasko (Windows & Mac OS X support)
Matthias Klose (Zero AArch64 & Debian support)
Denis Lila (RH661505)
Robert Lougher (JamVM support)
Omair Majid (initial version of RH995488)
Xerxes Rånby (JamVM support)
We would also like to thank the bug reporters and testers!
To get started:
$ tar xzf icedtea-2.4.2.tar.gz
or:
$ tar x -I xz -f icedtea-2.4.2.tar.xz
then:
$ mkdir icedtea-build
$ cd icedtea-build
$ ../icedtea-2.4.2/configure
$ make
Full build requirements and instructions are available in the INSTALL file.
Happy hacking! [Less]
|
|
Posted
over 12 years
ago
Today I released three projects simultaneously. First up, JFreeChart 1.0.16 is out. This release includes some new features (axis label improvements, simplified ChartFactory methods, utility methods to interpolate y-values in XYDatasets
... [More]
, CategoryAxis URL support in image maps) that were added in the two months since the previous release, a few important bug fixes, and a bit of clean-up that's possible now that we've dropped support for JDKs 1.4.2 and 1.5 (you're going to need 1.6.0 or later going forward).
Next, I've updated both JFreeSVG and OrsonPDF. These libraries (which provide fast and lightweight SVGGraphics2D and PDFGraphics2D implementations) can be used with JFreeChart or indeed any Java application that uses Java2D. I updated JFreeChart's ChartPanel class to auto-detect these libraries on the classpath and provide options to save charts to SVG and PDF, as seen in this screenshot:
If the libraries are not on your classpath, the export to SVG and PDF options won't be shown. Now, you'll notice that JFreeSVG and OrsonPDF are not as "free-as-in-beer" as JFreeChart. That's intentional...if you want to use these libraries in your applications, you'll need to buy a license. The good news is that, during September and October 2013 the licenses will be included free-of-charge with all purchases of the JFreeChart Developer Guide. So buy the guide, and help keep JFree alive! [Less]
|
|
Posted
over 12 years
ago
It's my plan to release JFreeChart 1.0.16 this month. In the two months since 1.0.15 was released, during this time there have been almost 30,000 downloads...my current challenge is to convert a greater percentage of these downloaders into paying /
... [More]
contributing customers (more about that later, but rest assured there is no license change planned for JFreeChart).
Over the summer I've created two new lightweight libraries (JFreeSVG and OrsonPDF) that provide fast and easy creation of charts (and any other Graphics2D output) in SVG and PDF format. Previously that has required the use of Apache's Batik and Bruno Lowagie's iText, both really great libraries but dependencies that carry a certain "weight" with them. JFreeChart 1.0.16 will make use of JFreeSVG and OrsonPDF out-of-the-box when they are present on the class path...and in addition I hope that developers will find uses for these libraries independently of JFreeChart (full disclosure: these libraries are less "free" than JFreeChart :-) , you can expect more of this from me).
While you're here, let me draw attention to another small feature coming in JFreeChart 1.0.16 - support for AttributedStrings in axis labels. Here is a simple example where the label can include a super-script (there's more you can do with attributed strings, but this is a good use-case):
I don't know why I didn't add this many years ago...but in any case, it is coming in 1.0.16. And I'll show you the rest of the chart later, which is quite an interesting visualisation of the amount of water used by the top 20 water-consuming countries. [Please, if you have some interesting data, let me know ... I'm in the process of updating the JFreeChart demo charts to use more real data]. [Less]
|
|
Posted
over 12 years
ago
Did you know it was possible?I got that question asked more than once!Or horizontal menus? or Macintosh-style?Well the obvious way is to install theme enabling this feature. However, you may want to tweak just a certain feature or customize the
... [More]
default look.Now you need to set a certain default. If you do not want to fiddle with the defaults write NSInterfaceStyleDefault GSWindowMakerInterfaceStyle, then the "Defaults" preference panel will be your friend!The Panel has been long around a long time! It is easy to enable things. But once you need to set I just completed two useful enhancements in System Preferences:New editor type for fixed-list choices, as is the case for the interface styles!All values can have now a localized description!You can see the new editor in action with WindowMaker style menus which, by the way, are more convenient when using the "stick" pointer instead of a Mouse, as found on ThinkPads and certain other laptops. [Less]
|