20
I Use This!
Activity Not Available

News

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]