|
Posted
over 13 years
ago
The IcedTea project provides a harness to build the source code from OpenJDK6 using Free Software build tools, along with additional features such as a PulseAudio sound driver and support for alternative virtual machines.
A new set of releases is now
... [More]
available for IcedTea6, which uses OpenJDK6 as its base:
IcedTea6 1.10.7 (based on OpenJDK6 b22)
IcedTea6 1.11.2 (based on OpenJDK6 b24)
Full details of each release can be found below.
PLEASE NOTE: With this release, the 1.9 series is now NO LONGER SUPPORTED, in a general push to reduce the release support burden to two releases per JDK release (6, 7, 8). We strongly recommend that you upgrade to a new release series; either of the two above for OpenJDK6. Alternatively, make the jump to OpenJDK7 with 2.0.1, 2.1.0 or 2.2.0 (to be released shortly).
What’s New?
New in release 1.10.7 (2012-05-11)
Fixed build with GCC 4.7
Bug fixes
PR732: Use xsltproc for bootstrap xslt in place of Xerces/Xalan
PR881: Sign tests (wsse.policy.basic) failures with OpenJDK6
Specify both source and target in IT_GET_DTDTYPE_CHECK.
PR758: [regression] javah from 6hg/b23 generates `jlong’ from `private int’
Install nss.cfg into j2re-image too.
Backports
S6792400: Avoid loading of Normalizer resources for simple uses
S7103224: collision between __LEAF define in interfaceSupport.hpp and /usr/include/sys/cdefs.h with gcc
S7140882: Don’t return booleans from methods returning pointers
New in release 1.11.2 (2012-05-11)
Bug fixes
RH789154: javac error messages no longer contain the full path to the offending file:
PR797: Compiler error message does not display entire file name and path
PR881: Sign tests (wsse.policy.basic) failures with OpenJDK6
PR886: 6-1.11.1 fails to build CACAO on ppc
Specify both source and target in IT_GET_DTDTYPE_CHECK.
Install nss.cfg into j2re-image too.
PR584: Don’t use shared Eden in incremental mode.
Backports
S6792400: Avoid loading of Normalizer resources for simple uses
The tarballs can be downloaded from:
http://icedtea.classpath.org/download/source/icedtea6-1.10.7.tar.gz (signature)
http://icedtea.classpath.org/download/source/icedtea6-1.11.2.tar.gz (signature)
SHA256 checksums
aefa76073ee5c44b9173554d8c50610a394f3123df40b0060ad796fb6d36788e icedtea6-1.10.7.tar.gz
078637dc8323951b18cbb2aac56fd2f24baaa81f0757391aaa17e1b7577e9ce5 icedtea6-1.11.2.tar.gz
Each tarball is accompanied by a digital signature (links above). This is produced using my public key.
PGP Key: 248BDC07 (http://keys.indymedia.org)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07
The following people helped with these releases:
Deepak Bhole (GCC 4.7 fixes, including S7140882)
Danesh Dadachanji (backport of PR732)
Andrew Haley (fix for PR584)
Andrew John Hughes (all other fixes and release management)
Denis Lila (fix for PR758)
Omair Majid (backport of S7103224, patch reviews)
Xerxes Ranby (review of CACAO/JamVM arch fix)
Pavel Tisnovsky (backport ofS6792400, fix for PR881 & RH789154))
We would also like to thank the bug reporters and testers!
To get started:
$ tar xzf <tarball name>
$ cd <tarball name minus .tar.gz suffix>
Full build requirements and instructions are in INSTALL:
$ ./configure [--with-parallel-jobs[=x] --enable-pulse-java --enable-systemtap ...]
$ make
[Less]
|
|
Posted
over 13 years
ago
As Edvard Wendelin announced on the jdk7u-dev mailing list, the source code bundle corresponding to the JDK 7 Updates jdk7u/jdk7u4 Mercurial forest is now available for download.Happy packaging!
|
|
Posted
over 13 years
ago
I don't do github pull requests.github throws away all the relevant information, like having even avalid email address for the person asking me to pull. The diffstat isalso deficient and useless.Git comes with a nice pull-request generation module
... [More]
, but githubinstead decided to replace it with their own totally inferior version.As a result, I consider github useless for these kinds of things. It'sfine for *hosting*, but the pull requests and the online commitediting, are just pure garbage.Linus Torvalds commenting on a GitHub pull request to the Linux kernel. [Less]
|
|
Posted
over 13 years
ago
IKVM.NET has always had a class granularity JIT. Whenever a type is first "used"
the CLR fires the AppDomain.TypeResolve event
and at that point the IKVM.NET runtime compiles the Java bytecode to CIL for all of
the methods in
... [More]
the class.
I don't recall my exact thought process, but I assume that when I started on IKVM.NET
I looked at MethodRental.SwapMethodBody and
was scared away by the lack of documentation and the fact that it requires full trust
and manually constructing a method body blob.
Later on, I focussed more on static compilation and didn't care too deeply about dynamic
performance. So I never revisited this decision. However, recently I have been thinking
about dynamic performance, triggered by potential invokedynamic optimizations.
To get reacquainted with MethodRental.SwapMethodBody I wrote a small program that
dynamically creates the following class:
class Frob {
public Frob(int i) { Console.WriteLine(i); } public static void M(int i) { Console.WriteLine();
Console.WriteLine(new Frob(i)); } }
The code is available here: MethodRentalDemo.cs
When the constructor and the M method are first created, the method body is defined,
using MethodBuilder.CreateMethodBody,
as a simple trampoline that calls Program.JIT to just-in-time generate the actual
CIL for the method.
Here's the managed JIT trampoline CIL code for Frob.M:
ldtoken method void Frob::M(int32))
call void Program::JIT(valuetype System.RuntimeMethodHandle)
jmp void Frob::M(int32)
The jmp instruction is interesting, it transfers control to a method that takes the
same arguments as the current method and passes the current argument values. Here
it is used to jump to a new version the same method, where the method body has been
replaced with the actual CIL code.
The native code that is generated for the trampoline is:
x86
x64
push ebp
mov ebp,esp
sub esp,8
xor eax,eax
mov dword ptr [ebp-8],eax
mov dword ptr [ebp-4],ecx
lea ecx,[ebp-8]
mov edx,6231A0h
call 680065F0
lea eax,[ebp-8]
push dword ptr [eax]
call FFE39B70
mov ecx,dword ptr [ebp-4]
mov esp,ebp
pop ebp
jmp dword ptr ds:[006231A8h]
push rbx
sub rsp,20h
mov ebx,ecx
lea rcx,[00257330h]
call FFFFFFFFF35036D0
mov rcx,rax
call 00000000001C84C0
mov ecx,ebx
lea rax,[00247D80h]
add rsp,20h
pop rbx
jmp rax
add
rsp,20h pop rbx ret
(Note that the x64 JIT generates three unreachable instructions at the end. Shown
in gray.)
When this code is invoked, it loads the method handle and calls the Program.JIT method.
After that returns, it invokes the new method body that the JIT method installed using
MethodRental.SwapMethodBody.
When run on the CLR* this all appears to work as you'd hope, but unfortunately that's
no guarantee that it will work in the real world. Googling (and experience) suggests
that there aren't many** users of MethodRental.SwapMethodBody, so it is quite possible
that there are some showstoppers lurking somewhere.
* It does not work on Mono at the moment.
** I found one reference to it in a paper on
RubySharp from 2004.
[Less]
|
|
Posted
over 13 years
ago
I'm happy to announce that yesterday the GNUstep Application Project released version 1.4 of Zipper. It was adopted by GAP in accordance with the original author and the license changed to GPL v2. Zipper is an archive tool which allow viewing of
... [More]
various formats and creation of tarball (with GWorkspace Service). What's new in this 1.4 releaseFirst version released by GAPInterface redone in GormExtensive fixes to BSD tar supportBug fixes in the handling of archiver outputs, options and datesPortability fixes and crash fixesUpdated infrastructure to current GNUstep make and runtimeMacintosh port (to prove portability) Where to find it?In the GAP project: http://gap.nongnu.org/zipper/index.html Many thanks to Sebastian Reitenbach who contacted the original Author, Dirk Olmes, to make the move and who with Philippe Roussel helped during tested and debugging sessions [Less]
|
|
Posted
over 13 years
ago
We now have a download page on java.net to host preview builds from Oracle:http://jdk8.java.net/jigsaw/This should be useful to those that want to try out Project Jigsaw and/or the current prototype of the modular JDK without needing to build it themselves.Alan Bateman in a post to the jigsaw-dev mailing list.
|
|
Posted
over 13 years
ago
Were it grounded in reality, Oracle’s claim that copyright law gives them proprietary control over any software that uses a particular functional API would be terrible for free software and programmers everywhere. It is an unethical and greedy
... [More]
interpretation created with the express purpose of subjugating as many computer users as possible, and is particularly bad in this context because it comes at a time when the sun has barely set on the free software community’s celebration of Java as a language newly suitable for use in the free world. Fortunately, the claim is not yet reality, and we hope Judge Alsup will keep it that way.
John Sullivan, executive director of the Free Software Foundation [Less]
|
|
Posted
over 13 years
ago
Has been a release week for almost all of our projects (no surprisingly, since Fedora 17 is around the corner!), and I'm happy to announce that Thermostat 0.2 "The Dharma Bums" has been released, and is ready for download.
New and noteworthy in this
... [More]
release:New GC tool monitoring GC frequency and time spent in GC.Basic history mode for saving and offline analysis of monitoring data.Command line interface providing one-shot commands as well as shell mode.GUI client now displays CPU load information for each process.
From a personal point of view, I'm very happy because we had a chance to introduce many design concepts and development techniques (yes, mvc, ttd, scrum, agile, all the funny things), which are not only speeding up development, but also ensure that the code is well tested and well designed and organized.We went from very minimal to almost complete code coverage in only two months, and the coverage includes UI as well, very neat.This proves that is possible and cost effective to deploy a full TTD model and that the model scales well after the initial obvious impact, and it turned critical in at least few opportunities were we could just trust the code coverage to backup our refactoring efforts without introducing new bugs. This stuff works, if you ever had any doubt!! :)
Anyway, I'm digressing now. You can read the original announcement here.A big thanks to the rest of the Thermostat community, Jon, Omair and Roman, which are doing a tremendous work all the time, and to Andrew Haley and Deepak because of all the external testing and great feedback they keep giving us, and because they maintain their expectations all the time very high forcing us to deliver quality code ;) [Less]
|
|
Posted
over 13 years
ago
At Devoxx France 2012, I attended to conference titled Java Caching with Guava presented by Charles Fry.
The Guava Cache library works one level above ConcurrentHashmap but doesn’t offer as much features as Ehcache. Guava caches aren’t pre-loaded by
... [More]
default and are all thread safe. The loading of a cache is done with an implementation of the abstract class CacheLoader.
The build of the cache is done progressively, starting by a call to the static method CacheBuilder.newBuilder(), then chaining calls to methods from class CacheBuilder. This allows to specify its configuration and especially its eviction strategy for values : value accessed least recently with expireAfterAccess(long, TimeUnit), value modified least recently modified with expireAfterWrite(long, TimeUnit) … Besides time goes, eviction of values can be activated by specifying the maximum total weight of the cache with a call to maximumWeight(long), requiring also a call to weigher(Weighter) to indicate how to weigh a cache entry.
The build of the cache terminates by calling build() or build(CacheLoader), which returns a new Cache instance.
Besides classical features, cache statistics can be activated by calling the recordStats() method. Usage of the removalListener(RemovalListener) method allows to know when a value has just been deleted from the cache. By default, this notification is synchronous, which can slow down cache operations. To process notifications asynchronously, you must wrap your RemovalListener by calling RemovalListeners.asynchronous(RemovalListener, Executor). While building the cache, a call to refreshAfterWrite(long, TimeUnit) will schedule an automatic refresh of a value some time after its creation or its last modification. In some cases, it’s more interesting to load all cache values once by overloading the CacheLoader.loadAll(Iterable) method.
Among features, there is Cache.get(K, Callable) to get a value from the cache by specifying how to add it when it’s missing. In this case, a unique call to Callable is done by the cache, even if multiple threads are asking the value for that key. Finally, it’s possible to get a view of the cache as a ConcurrentMap by calling asMap().
Bookmark and Share More »Powered by Bookmarkify™ [Less]
|
|
Posted
over 13 years
ago
When the SAP Java Virtual Machine team decided to join the OpenJDK project last year, they first of all wanted to understand the overall direction and governance structure of the project. After Volker Simonis and other team members contributed a few
... [More]
bug fixes and minor enhancements, they quickly observed that their contributions were not only welcomed, but that there are many similar interests among the different OpenJDK project members - the most important one being to protect the future of Java. What a bold statement ... in practice this means that through active participation and contribution from a broader group of participants, the work can be shared and innovation for the Java platform can jointly be defined by means of one standard implementation.Based on this experience, SAP today decided to significantly incresae its contributions. Please read Volker Simonis' blog post on the OpenJDK mailing list about a new project proposal. We now plan to contribute whole platform ports in a belief that it is economically better to standardize our own implementation than to keep it proprietary. The first platform port that we are going to contribute is Linux on PowerPC. Based on that, we will work together with IBM and others and also use it as a basis for the AIX on PowerPC port. Depending on the outcome, other ports for other platforms might follow.Claus von Riegen, Vice President Industry Standards and Open Source at SAP, in a blog post titled Protecting the future of Java. [Less]
|