|
Posted
over 13 years
ago
Innovation in Java passiert im OpenJDK-Umfeld.Harald Müller, Chief Product Owner for the Java Platform of SAP, in an interview with the German Java aktuell magazine in issue nr. 03, Autumn 2012.
|
|
Posted
over 13 years
ago
The JavaOne 2012 content catalog is now live. As in the previous years, I took the opportunity to look for the talks and BOFs with OpenJDK in their title, or abstract, and pull them together in a list:CON6803 - JDK 7 Updates in OpenJDKIn this
... [More]
session, you’ll learn how the JDK 7 updates project in OpenJDK works and how to work within it, track changes, get your fixes in, and follow along as new features such as the Mac OS X port get integrated into JDK 7 update releases.BOF4047 - OpenJDK Building and Testing: Case Study—Java User Group OpenJDK BugathonBuilding and testing are essential to the development cycle. Currently the whole OpenJDK infrastructure is being rearchitected to support the distributed engineering community. In this session, Cecilia Borg, senior engineering manager on the Java SE Product Management team, gives an overview of the current state of the OpenJDK build-and-test infrastructure and what to hope for during the coming year. Two OpenJDK participants and JCP members share their experiences of executing bugathons with the London Java user group (LJC) in the U.K. Holding a bugathon is an excellent way to learn the basic steps of getting started with OpenJDK while responding to simple build warnings. A portion of the session is set aside for Q&A.UGF10434 - JCP and OpenJDK: Using the JUGs’ “Adopt” Programs in Your GroupJava user groups around the globe have banded together to work on the OpenJDK (Java itself) and other Java ecosystem standards (JSRs) to improve their technical quality and usability by developers (avoiding the creation of well-meaning but not very usable standards, such as the EJB 2.0s of the past). They have approximately 100 people working on the OpenJDK and several JSRs, making some positive differences in the platform and standards that millions of developers will use going forward. These initiatives are a great way to dive into some core Java, Java EE, and Java ME technologies as well as to give something back to the community. This open session covers the practical steps of how to get involved as well as general Q&A.UGF10470 - Free Java: Introduction to the OpenJDK ProjectSince Java’s source code was released under a free and open source license, the OpenJDK project has attracted developers and companies to push Java forward. But working on its seven million lines of code can seem like a daunting task. This session discusses the OpenJDK project and its importance and shows how you can navigate this important project, how you can participate, and why you should get involved.CON6490 - Right Ways to Climb the OpenJDK Source TreeThis presentation focuses on the mistakes developers make in working with OpenJDK source code and how to avoid them. It covers the code Web interface, mercurial tool configuration issues, OpenJDK changeset metadata structure, build tags, changeset comments specific to OpenJDK, and procedures for cloning a particular build and looking for source code differences via a given OpenJDK bug ID. It also describes the changeset graph, how merges work, and how a collection of repositories can create problems. The session demonstrates how mercurial graphical tool visualization will help reveal and help you understand common OpenJDK issues with respect to the development code tree structure and proposed solutions. CON3705 - OpenJDK Governance and Development Process OverviewThis session is for people who want to learn about the OpenJDK community as well as those with some basic hands-on experience with it. As OpenJDK continues its momentum, understanding the governance model and development process becomes important to the broader Java community. This session starts with a very quick introduction to the OpenJDK ecosystem and an overview of why it works. The bulk of the session is an overview of the governance model and development process as described in the OpenJDK Community bylaws. The presentation also highlights some of the community norms for adding new committers, groups, and projects. At the end of this session, you will have a better understanding of what OpenJDK is and how it ticks. BOF4034 - OpenJDK and the Common VM Interface ProjectThis session covers the changes happening in the OpenJDK Common VM Interface (CVMI) project as the community members build on the original work of Andrew Hughes. With the major VM teams working together to document, clarify, and update the interface between the VM and the class libraries, this BOF is an opportunity for everyone interested to meet some of the main participants and learn more about the history, plus current and future changes. Extending the reach of this project to encompass more virtual machine implementations is not a short-term exercise. BOF8203 - All Power to OpenJDK: Porting the JDK to PowerPC and AIXThis session explores the challenges faced and eventually overcome in extending the range of platforms directly supported by OpenJDK to include AIX and Linux PowerPC. Learn how the OpenJDK community, including new members from SAP and IBM, are working together to deliver new OpenJDK platforms. Hear about the technology challenges faced when porting Oracle’s HotSpot to a new processor architecture, and see how the changes required to support the OpenJDK on AIX and Linux PPC have increased portability for follow-on porting projects. Whether you are just interested in the technical challenges faced or are thinking about porting OpenJDK to a new operating system , this BOF will educate you on what it takes to bootstrap a new platform with OpenJDK. BOF3578 - OpenJDK + Open Source EnhancementsOpenJDK has enjoyed growing popularity over the last four years. A large amount of focus has gone into developing OpenJDK itself, but relatively little effort has gone into enhancing the surrounding ecosystem. This session first covers the open source efforts to increase OpenJDK adoption over the past four years. It also includes an open discussion to engage the community to increase involvement and further improve upon what has been done so far. Topics covered include the efforts that have gone into and the benefits of IcedTea, IcedTea-Web, and Thermostat (a new project). If attendees are working on an open source project with similar goals, they are welcome to give a brief synopsis of it. BOF4040 - OpenJDK: Java SDKs—Testing, Testing, Testing ...The quality of OpenJDK JDKs is an important topic for everyone. This BOF explores the tools, processes, and general approach used to ensure continuing high-quality products. Listen as IBM and Oracle explain the practicalities of testing Java SDKs. Participate in the discussion of the opportunities and challenges that face the OpenJDK community in measuring, maintaining, and improving quality. Topics range from the test infrastructure, reporting, and related frameworks to developing new test suites and updating old ones. Learn how you too can be involved in all aspects of the testing of OpenJDK JDKs and can help ensure that existing and future SDKs will continue to have the level of quality we all expect. CON6659 - Building Large Java Projects Faster: Multicore javac and Makefile IntegrationThe makefiles for the OpenJDK have begun to show their age. They were slow, did not allow for incremental builds, and created a high barrier of entry for new developers who wanted to join the OpenJDK development community. It took one year to achieve, but now the new makefiles are in the OpenJDK and the build times have been reduced by a factor of 5 and support efficient incremental builds. This presentation explains and demonstrates the new makefiles and how you can put this new technology to use in your own projects. BOF10608 - OpenJDK Penrose Project BOFProject Penrose was established at OpenJDK in February 2012 to ensure seamless integration between Java 8 modularity and OSGi. Come to this session to hear how OSGi differs from Java modularity and how Penrose has brought developers together to ensure that these module systems evolve to protect your existing code and enable future interoperability. The presentation takes a peek under the covers to see how OSGi can be optimized for running on a modular JRE and describes how you can design your application to get the best of both worlds. CON8224 - Deploy Your Application with OpenJDK 7 on Mac OS XThis session covers how to deploy Java applications via the Mac App Store with OpenJDK 7.CON7263 - JVM JIT for DummiesMost Java developers never get past -Xmx, -classpath, and -jar when learning about the flags that JVMs offer. If you’re an OpenJDK user, you know -server and -client too. But if you’re a performance nut, you crave more. This session walks through several lower-level OpenJDK flags you can use to monitor what code the JVM compiles into native code, what decisions it makes along the way, and even what that native assembly looks like. You’ll learn how JVM bytecode makes its way through Oracle’s HotSpot and how you can write code that JVMs will optimize well. CON5243 - Real-World Compatibility and the Java PromiseEver wonder how Java achieves such success in fulfilling the “write once, run anywhere” (WORA) promise? In this session, a senior member of the IBM Java team speaks candidly about the many difficulties Java faces behind the scenes in terms of compatibility and the various perspectives to consider. The presentation describes areas such as bugs, bug fixes, algorithmic implementation assumptions, optimizations, multiple JVM implementations, and language changes. Hear how IBM is making Java better by championing compatibility and contributing directly to OpenJDK. By the end of the session, you will have clear insights into the complexity of the issues and how they’re addressed in the OpenJDK ecosystem. CON7147 - Dare to Compile Your Code with -Xlint:all -WerrorWould you ever dare to enable all compiler warnings? Most people don’t, and some people are afraid to, because of what they might find out about their code. The Java compiler is the first line of defense against bugs. Enabling warnings makes it possible for the compiler to tell you more about your code. Fixing warnings will improve your code base, because the warnings will point out bugs, questionable constructs, and use of obsolescent and deprecated interfaces.
This session’s speakers cite examples from their experiences in cleaning up warnings in the JDK, with the participation of the OpenJDK community. Don’t be afraid to enable compiler warnings! BOF6283 - 101 Ways to Improve Java: Why Developer Participation MattersThis community brainstorming session and presentation deal with how to influence the development of Java technologies through participation. The session includes JUG leaders and Java Champions along with JCP program office staff. It includes the following topics: • The Adopt a JSR program • The Adopt OpenJDK program • Relationship of open source and standards • JCP improvements • Involvement with JUGs • Commenting, fixing bugs, and voting • How this involvement can benefit a developer’s career CON4538 - Java Embedded Goes Modular: How to Build Your Custom Embedded Java RuntimeThe OpenJDK project Jigsaw introduces a new way to structure Java software into modules. As part of the development of Jigsaw, for JDK 8, the Java platform itself will be modularized. This change in the architecture of the Java platform is a key technology enabling the convergence of Java ME/CDC with Java SE for Embedded. This converged product will enable the creation of JDK 8 runtimes that will be able to support platforms that previously were possible only with a subset of JDK 1.5. This session provides details of JDK 8 for embedded systems and the contents of the new converged product, including JavaFX support for embedded specific graphics stacks. The session includes a demonstration of new tools that enable the creation of custom JDK 8 embedded JREs. BOF6235 - Meet the AWT, Java 2D, and Swing TeamsDevelopment engineers from the Java 2D graphics, AWT, and Swing teams host this BOF. The intention is to make this a true BOF in which engineers from these teams meet with developers who have a keen interest in this area, so it will be light on presentation and heavy on interaction. Likely topics of discussion include questions about bugs, features, and platform issues such as the new Mac OS X JDK product from Oracle. You’ll also learn how to get involved with OpenJDK development for the client areas of the JDK.That's a total of 19 sessions! More then double from last year (again) - i.e. the number of sessions on OpenJDK at JavaOne keeps approximately doubling since 2009. With sessions presented by a diverse roster of speakers from IBM, JClarity, JRuby, LJC, Nashville JUG, Oracle, Red Hat, Rochester JUG, SAP and ToolsCloud, JavaOne is the best place this year to learn about OpenJDK.See you there! [Less]
|
|
Posted
over 13 years
ago
I've released IKVM.NET
7.1 to SourceForge. The binaries are identical to the ones in release
candidate 2.
Release Notes
This document lists the improvements, known issues and
... [More]
incompatibilities.
What's New (relative to IKVM.NET
7.0):
Integrated OpenJDK 7 u4 b22.
Dropped experimental partial trust support.
Much improved ikvmc error and warning handling.
Added ikvmc options: -win32manifest, -filealign, -highentropyva.
Removed ikvmc -platform:Itanium option.
Added ikvm.lang.DllExport annotation to export static methods as unmanaged entry points.
Added ikvm.runtime.Util.getClassFromTypeHandle() overload for classes that represent
arrays of remapped .NET types and .NET primitives.
Added extension methods for (almost) all instance methods in Object, String and Throwable
to ikvm.extensions.ExtensionMethods.
Added support for delegates with ByRef parameters.
Added support to ikvmc to automatically set the full source path in the debugging
info if the source file lives next to the .class file.
When adding certificates to virtual cacerts file make sure that the aliases that are
generated from the certificate subject are unique.
Many (minor) bug fixes.
Many IKVM.Reflection fixes and improvements.
Runtime
Code unloading (aka class GC) is not supported.
In Java static initializers can deadlock, on .NET some threads can see uninitialized
state in cases where deadlock would occur on the JVM.
JNI
Only supported in the default AppDomain.
Only the JNICALL calling convention is supported! (On Windows, HotSpot appears to
also support the cdecl calling convention).
Cannot call string contructors on already existing string instances
A few limitations in Invocation API support
The Invocation API is only supported when running on .NET.
JNI_CreateJavaVM: init options "-verbose[:class|:gc|:jni]", "vfprintf", "exit" and
"abort" are not implemented. The JDK 1.1 version of JavaVMInitArgs isn't supported.
JNI_GetDefaultJavaVMInitArgs not implemented
JNI_GetCreatedJavaVMs only returns the JavaVM if the VM was started through JNI or
a JNI call that retrieves the JavaVM has already occurred.
DestroyJVM is only partially implemented (it waits until there are no more non-daemon
Java threads and then returns JNI_ERR).
DetachCurrentThread doesn't release monitors held by the thread.
Native libraries are never unloaded (because code unloading is not supported).
The JVM allows any reference type to be passed where an interface reference is expected
(and to store any reference type in an interface reference type field), on IKVM this
results in an IncompatibleClassChangeError.
monitorenter / monitorexit cannot be used on unitialized this reference.
Floating point is not fully spec compliant.
A method returning a boolean that returns an integer other than 0 or 1 behaves differently
(this also applies to byte/char/short and for method parameters).
Synchronized blocks are not async exception safe.
Ghost arrays don't throw ArrayStoreException when you store an object that doesn't
implement the ghost interface.
Class loading is more eager than on the reference VM.
Interface implementation methods are never really final (interface can be reimplemented
by .NET subclasses).
JSR-133 finalization spec change is not fully implemented. The JSR-133 changes dictate
that an object should not be finalized unless the Object constructor has run successfully,
but this isn't implemented.
Strict class-file
checking is not implemented.
If a class with a finalizer and static initializer allocates instances of itself in
the static initializer and the static initializer subsequently fails, the .NET runtime
may abort the application when trying to finalize the objects.
Static Compiler (ikvmc)
Some subtle differences with ikvmc compiled code for public members inherited from
non-public base classes (so called "access stubs"). Because the access stub lives
in a derived class, when accessing a member in a base class, the derived cctor will
be run whereas java (and ikvm) only runs the base cctor.
Try blocks around base class ctor invocation result in unverifiable code (no known
compilers produce this type of code).
Try/catch blocks before base class ctor invocation result in unverifiable code (this
actually happens with the Eclipse compiler when you pass a class literal to the base
class ctor and compile with -target 1.4).
Only code compiled together during a single compilation fully obeys the JLS binary
compatibility rules.
Class Library
Most class library code is based on OpenJDK 7u4 build 22. Below is a list of divergences
and IKVM.NET specific implementation notes.
com.sun.security.auth.module
Not supported.
java.applet
Not implemented.
java.awt
Partial System.Windows.Forms based back-end. Not supported.
java.io.Console
Not implemented.
java.lang.instrument
Not implemented.
java.lang.management
Limited implementation.
java.net
SCTP and SDP not
implemented.
java.net.ProxySelector
Getting the default system proxy for a URL is not implemented.
java.nio.file
Most optional features (e.g. ACLs) are not implemented.
java.text.Bidi
Not supported.
java.util.zip
Partially based on GNU Classpath implementation.
javax.crypto
ECC is not implemented.
javax.imageio.plugins.jpeg
Partial implementation. JPEGs can be read and written and there is limited metadata
support.
javax.management
Limited implementation.
javax.print
There is a Win32 specific printing implementation. Not supported.
javax.script
ECMAScript implementation is not included.
javax.smartcardio
Not implemented.
javax.sound
Not implemented.
javax.swing
Not supported.
javax.tools
Not supported.
org.ietfs.jgss
Not implemented.
sun.jdbc.odbc
Implementation based on .NET ODBC managed provider.
sun.net.www.content.audio
Audio content handlers not implemented.
sun.net.www.content.image
Not supported.
The entire public API is available, so "Not implemented." for javax.smartcardio, for
example, means that the API is there but there is no back-end to provide the actual
smartcard communication support. "Not supported." means that the code is there and
probably works at least somewhat, but that I'm less likely to fix bugs reported in
these areas, but patches are welcome, of course.
Specific API notes:
java.lang.Thread.stop(Throwable t) doesn't support throwing arbitrary exceptions on
other threads (only java.lang.ThreadDeath).
java.lang.Thread.holdsLock(Object o) causes a spurious notify on the object (this
is allowed by the J2SE 5.0 spec).
java.lang.String.intern() strings are never garbage collected.
Weak/soft references and reference queues are inefficient and do not fully implement
the required semantics.
java.lang.ref.SoftReference: Soft references are not guaranteed to be cleared before
an OutOfMemoryError is thrown.
Threads started outside of Java aren't "visible" (e.g. in ThreadGroup.enumerate())
until they first call Thread.currentThread().
java.lang.Thread.getState() returns WAITING or TIMED_WAITING instead of BLOCKING when
we're inside Object.wait() and blocking to re-acquire the monitor.
java.nio.channel.FileChannel.lock() shared locks are only supported on Windows NT
derived operating systems.
java.lang.SecurityManager: Deprecated methods not implemented: classDepth(String),
inClass(String), classLoaderDepth(), currentLoadedClass(), currentClassLoader(), inClassLoader()
java.util.zip.ZipFile(String, CharSet) constructor added in Java 7 is missing.
The class org.omg.PortableInterceptor.UNKNOWN is included, but is not part of Java
7.
Supported Platforms
This release has been tested on the following CLI implementations / platforms:
CLI Implementation
Architecture
Operating System
.NET 2.0 SP2
x86
Windows 7
.NET 2.0 SP2
x64
Windows 7
.NET 4.0
x86
Windows 7
.NET 4.0
x64
Windows 7
Mono 2.10.5
x86
Windows 7
Mono 2.10.5
x64
Ubuntu 11.10
Partial Trust
Experimental support for running in partial trust has been withdrawn. Due to the deprecated
nature of ASP.NET partial trust and
the fact that supporting partial trust in .NET 4.0 will be impossible to combine with
serialization interop, I've decided to stop supporting partial trust scenarios.
[Less]
|
|
Posted
over 13 years
ago
In the last episode of the Java Spotlight podcast, we interviewed Mike Duigou from the Oracle Java Core Libraries team, on Project Lambda.As usual, you can grab just this episode or fetch the whole feed.
|
|
Posted
over 13 years
ago
The OpenJDK is now the heart of a vital piece of technology that (in application software terms) runs large parts of our entire civilization, affecting billions of people daily. So, changes to it need to be made with a great deal of care and with as
... [More]
much scientific rigor and empirical analysis as possible.Raoul-Gabriel Urma, Janina Voigt and Martijn Verburg in an article in the July/August 2012 edition of the Java Magazine. [Less]
|
|
Posted
over 13 years
ago
I am working on two long-needed features of DataBasin, the open source application to extract and inspect data from salesforce.comThe first feature is rather simple: a log window which shows some informative or debug output usually thrown to the
... [More]
console. While on standard Unix we always have the terminal emulator open and all debugging is very convenient there, on mac and especially on windows it is inconvenient: DataBasin logged every output as an Event in the windows log. Quite painful.A much more complex, interesting and long awaited feature is that DataBasin now supports semi-joins! In other words, one can reference a field of a referenced object with the dot notation (like: Case.Account.Name) exactly as in the Salesforce.com Data Loader. The objects are recursively scanned and flattened so that they can be written to the CSV file. The column names are generated through the descent of the object tree.This feature required a much more flexible approach in the CVS writer core. This means that some regression bugs could appear... hopefully not.This feature applies to all queries, including the Select Identify query tool. As the parser was being rewritten and the supported API bumped to 25, it is now improved to handle Aggregate Objects, thus one can now issue the following SOQL query:select count(id), status from case group by statusand get the expected result:"Status","expr0""New","16""Closed","31"I hope these features make DataBasin much more useful! [Less]
|
|
Posted
over 13 years
ago
Since I always tend to forget and the documentation on the website is a bit incomplete, I sum up the procedure I use to update from source the kernel and userland:Update /usr with cvs, create /usr/obj and /usr/tools (or clean its content).As per
... [More]
documentation, build the tools. Inside /usr/src:$ ./build.sh -O /usr/obj -T /usr/tools -U -u toolsNow build the kernel:$ cd /usr/src$ ./build.sh -O ../obj -T ../tools kernel=Install it:# mv /netbsd /netbsd.old# mv /usr/obj/sys/arch//compile//netbsd /And now, important, build and install the modules:# ./build.sh -O /usr/obj -T /usr/tools -U -u modules installmodules=/Reboot and check that the kernel works. Then build and install userland:$ ./build.sh -O ../obj -T ../tools -U distribution# ./build.sh -O ../obj -T ../tools -U install=/ Cross your fingers and happy BSD! [Less]
|
|
Posted
over 13 years
ago
The AdoptOpenJDK program is an initiative to get as many Java users as possible to try the OpenJDK 8 preview builds, so that feedback is collected before JDK 8 is officially released. There are many ways to contribute to this program (as explained on
... [More]
the wiki), but the most basic one is to start testing your own project on the Java 8 platform. CloudBees can help you there, as we just made OpenJDK 8 (preview) available on DEV@cloud so that you can configure a build job to check project compatibility. We will upgrade the JDK for all recent preview builds until JDK 8 is finalNicolas de Loof, Support Engineer at Cloudbees in a blog post on AdoptOpenJDK. [Less]
|
|
Posted
over 13 years
ago
As announced by Parleys, Brian Goetz's presentation from Devoxx 2011 on Language/Library/VM co-evolution in Java SE 8 is now available for everyone's viewing pleasure.
|
|
Posted
over 13 years
ago
Today I have a somewhat unusual request to you: I need your vote to help get my son’s school class get a van. Let me explain. My son attends a local Montessori school in Ettenheim (Freiburg area in Germany). A local bank is doing a contest for all
... [More]
sorts of local associations to win a van (actually, 8 of them). All of the participating associations are asked to make a short video clip that shows why they need one. And since my son’s school class could really use such a van as sort of school bus or general purpose transportation tool, they made a short video clip. The video clip was made by the students themselves, and I think it turned out really great. The selection of the winners goes in 3 phases: there were 80 participating associations, in the first round 50 were selected by voting (we already passed that), in the next round the top 25 of those 50 are selected by voting again (that’s what I’m gonna ask you about) and finally, 8 of those 25 are selected by a jury. We need to get into that last round now. What can you do? Simply follow this link and click on the star. No registration required. You only need to fill in a captcha and copy+paste some crap in order to prove that you’re human. If you do this: THANK YOU! It’s a great help!
[Less]
|