Änderungen: http://docs.codehaus.org/display/GROOVY/Groovy+2.4+release+notes. Interessanteste Neuerung ist sicherlich:
With Groovy 2.4, you can write Android applications in Groovy!
Änderungen: http://docs.codehaus.org/display/GROOVY/Groovy+2.4+release+notes. Interessanteste Neuerung ist sicherlich:
With Groovy 2.4, you can write Android applications in Groovy!
… jedenfalls vom ARM JDK, http://www.oracle.com/technetwork/java/javase/jdk-8u33-arm-relnotes-2406696.html.
Starting with JDK 8u33, JavaFX Embedded is removed from the ARM bundle and is not supported.
Ist das der Anfang vom Ende?
… zumindest beim Export ihrer BahnCard-Rechnungen in PDF:
Verfasser ist legodo CCS Designer, ein Tool, das die Bahn für die Vorlagen nutzt:
Microsoft Word ist und bleibt das favorisierte Tool vieler Nutzer im Bereich Angebotsmanagement. Der Funktionsumfang überzeugt bis heute mehr als 1 Milliarde Office-Nutzer. Die legodo CCS kombiniert den bekannten Editors mit den Vorteilen eines prozess- und systemgesteuerten Angebotsmanagements. legodo CCS nutzt Word als Editor für das Angebotsmanagement und setzt auf das Dateiformat OOXML, welches seit 2008 als ISO-Standard „ISO/IEC DIS 29500“ definiert ist.
Zitat http://www.legodo.com/loesungen/angebotsmanagement/details/
Nach dem die Word-Datei gefüllt wurde, kommt das nächste Tool, Aspose.Word for Java, was eine PDF generiert:
Aspose.Words for Java is an advanced class library for Java that enables you to perform a great range of document processing tasks directly within your Java applications. Aspose.Words for Java supports processing word (DOC, DOCX, OOXML, RTF) HTML, OpenDocument, PDF, EPUB, XPS, SWF and all image formats. With Aspose.Words you can generate, modify, and convert documents without using Microsoft Word.
Quelle: http://www.aspose.com/java/word-component.aspx.
Die Bahn nutzt hier zwei kommerzielle Werkzeuge, auch deshalb, weil die OpenSource-Welt hier mit nichts vergleichbares auswarten kann. Entwickler mit vergleichbaren Anforderungen müssen in die Tasche greifen. Am nächsten kommt man mit XForms und iText. Aber zu Konvertierung von Word nach PDF gibt es nichts Freies.
Grundsätzlich gibt es unabhängig von Java natürlich viele freie Alternativen.
Bei https://www.rheinwerk-verlag.de/:
Von https://www.rheinwerk-verlag.de/umbenennung/:
[…] wir haben uns einen neuen Namen gegeben. Wir tun das nicht freiwillig und nicht leichten Herzens. Aber es ist leider so, dass uns der weitere Gebrauch des Namens »Galileo Press« markenrechtlich untersagt werden soll. Das birgt große Risiken für unser Verlagsgeschäft. Darum haben wir uns entschieden, unseren Verlag neu zu benennen.
Details wie üblich im Blog http://in.relation.to/Bloggers/HibernateORM438FinalAnd4217FinalReleased. Nicht viel Neues dabei.
Siehe Details bei Juergen: http://spring.io/blog/2014/12/30/spring-framework-4-1-4-4-0-9-3-2-13-released.
Was neu in der Version 4.1.4 ist, lässt sich bei den Issues ablesen unter https://jira.spring.io/issues/?jql=project+%3D+SPR+AND+fixVersion+%3D+4.1.4.
http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/003295073abf zeigt uns in Java 9 endlich eine lang erwartete Methode:
+ /** + * Reads all bytes from this input stream and writes the bytes to the + * given output stream in the order that they are read. On return, this + * input stream will be at end of stream. This method does not close either + * stream. + * <p> + * This method may block indefinitely reading from the input stream, or + * writing to the output stream. The behavior for the case where the input + * and/or output stream is <i>asynchronously closed</i>, or the thread + * interrupted during the transfer, is highly input and output stream + * specific, and therefore not specified. + * <p> + * If an I/O error occurs reading from the input stream or writing to the + * output stream, then it may do so after some bytes have been read or + * written. Consequently the input stream may not be at end of stream and + * one, or both, streams may be in an inconsistent state. It is strongly + * recommended that both streams be promptly closed if an I/O error occurs. + * + * @param out the output stream, non-null + * @return the number of bytes transferred + * @throws IOException if an I/O error occurs when reading or writing + * @throws NullPointerException if {@code out} is {@code null} + * + * @since 1.9 + */ + public long transferTo(OutputStream out) throws IOException { + Objects.requireNonNull(out, "out"); + long transferred = 0; + byte[] buffer = new byte[TRANSFER_BUFFER_SIZE]; + int read; + while ((read = this.read(buffer, 0, TRANSFER_BUFFER_SIZE)) >= 0) { + out.write(buffer, 0, read); + transferred += read; + } + return transferred; + }
In diesem Jahr hat sich viel geklärt, was wir in Java 9 erwarten können.
Die bisher geplanten JEPs (JDK Enhancements) sind:
Wie beim Java 8 bildet das OpenJDK die Referenzimplementierung, auf deren Basis das Oracle JDK stehen wird. Das Mercurial Repository ist offen. Change-Sets der Builds dokumentieren die Änderungen.
Die Mailing-Listen dokumentieren weiterhin Updates:
Der Java-Compiler wird keinen Byte-Code mehr erzeugen von Versionen für Java 5 und Java 6. Siehe dazu auch http://www.infoq.com/news/2013/06/java-jep182.
Abgeblasen wurden:
HttpURLConnection
für moderne HTTP 2.0-Anwendungen. Vielleicht abgeblasen, weil es in der Java EE schon eine REST-Client-API definiert wurde (sieheDokumentation von Jersey), und genügend Open-Source-Bibliotheken die Lücke füllen. Denkbar für Java 10 ist eine Spracherweiterung genannt Value Objects (eine Art Strukturtyp), diskutiert unter http://openjdk.java.net/jeps/169.
In der Zukunft könne es besondere Optimierungen der JVM in der Cloud bzw. in/auf einem Hypervisor geben.
Angedacht ist auch eine GPU-Beschleunigung von Java-Anwendungen. Mithttp://openjdk.java.net/projects/sumatra/ gibt es erste Lösungen.
Immer aktuell unter http://www.tutego.de/java/java-9-opendjk-9-java-se-9.html.
Weitere quelloffene Java-Software unter http://www.tutego.de/java/java-open-source.htm.
http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx. Zumindest das statische Import kennen Java-Programmierer, sonst ist C# meilenweit voraus.
Je länger ich Eclipse benutze, desto seltener beschäftige ich mich mit Release-Dates oder den Features — es sei denn, ich warte auf die Unterstützung von neuen Sprache-Features.
So gingen auch die bisherigen Milestones von 4.5 an mir spurlos vorbei, auch der letzte Milestone M4 vom 12.12. Zusammenfassend Neuerungen, die (für mich) interessanter sind:
Assigning stdin to a file
Stdin can now be assigned to a file in the „Common“ tab of launch configuration dialogs.
Automatic scroll lock in Console view
Scrolling up in the Console view using keys, mouse wheel, or scroll bar now automatically enables the Scroll Lock mode.
When you scroll down to the end of the console, the scroll lock is automatically released again.
Improved flow analysis for loops
Flow analysis has been improved to more precisely capture the flow of null values in loops. This mainly achieves a reduction of false positive reports from null analysis.
Previously, example method „test1“ would raise a potential null pointer warning at point (3). To correct this issue the merging of information leading towards point (3) has been improved to correctly see that the null value from point (1) can never reach point (3).
In example method „test2“ JDT previously reported a redundant null check at (3), because analysis didn’t see that the assignment directly above could indeed assign a non-null value.
In example method „test3“ it was reported that „o can only be null“ at (3), because the information from the two null-assignments wrongly overruled the one assignment from non-null. With improved analysis this is now softened to saying „o may be null“.
The graph on the right hand side illustrates the new composition of flow information: for each relevant point (3) inside a loop, the analysis first merges the flows that lead into (1). This result is concatenated with the partial flow (b.c), which leads from the loop start to point (3). Improved precision has thus been achieved within the design limits of a single AST traversal in order to minimize impact on compiler performance.
‚Terminate/Disconnect All‘ in Console view
You can invoke the Terminate/Disconnect All action from the Console view’s context menu:
Add inferred lambda parameter types
You can explicitly add the inferred types of the parameters in a lambda expression by invoking the Quick Assist (Ctrl+1) – Add inferred lambda parameter types:
Convert method reference to lambda and back
New Quick Assists (Ctrl+1) have been added to convert…
Compiler schneller.
Word wrap in the Console
A new formatting option has been contributed to the Console view for all I/O consoles: Word Wrap.
The new option is available on the Console view toolbar and in the content popup menu within the Console view.
Der http://www.eclipse.org/projects/project-plan.php?planurl=/eclipse/development/plans/eclipse_project_plan_4_5.xml gibt uns noch einen Milestone vor, dann beginnt die Feinarbeit:
Details unter http://weblog.ikvm.net/2014/01/16/PubliclyReportedOpenJDKVulnerabilityFixedIn7u51.aspx:
import java.lang.invoke.*;
class test extends java.io.FileOutputStream {
static test t;
test() throws Exception {
super(„“);
}
protected void finalize() {
t = this;
}
public static void main(String[] args) throws Throwable {
MethodHandle mh = MethodHandles.lookup().findVirtual(test.class, „open“,
MethodType.methodType(void.class, String.class, boolean.class));
System.out.println(mh);
try { new test(); } catch (Exception _) { }
System.gc();
System.runFinalization();
mh.invokeExact(t, „oops.txt“, false);
}
}
Wie man von Joda-Time zur Java 8 Date&Time-API konvertiert diskutiert der Beitrag http://blog.joda.org/2014/11/converting-from-joda-time-to-javatime.html von Stephen Colebourne.
Der Autor von Joda-Time selbst empfiehlt bei neuen Projekten die Date-Time-API von Java:
If you are writing code in Java SE 8, its time to migrate to
java.time
, perhaps using ThreeTen-Extra to fill any gaps.
Googles Android-IDE war lange Zeit ein ADT-Plugin für Eclipse. Das ist nun vorbei, das Plugin wird nicht mehr (von Google offiziell) weiterentwickelt. Eine Version auf der Basis der quelloffenen Community Edition von IntelliJ war seit 2 Jahren in Entwicklung, und ist nun die offizielle IDE für Android-Anwendungen. Mit IntelliJ hat man sich sicherlich eine gute Basis ausgesucht, nur wird es viele Eclipse-IDE-Nutzer verprellen, die bei den Shortcuts und der Projektorganisation dazulernen müssen.
Links:
In der kommenden Version JDK 8u40 gibt es einige Änderungen, die die Performance von JS-Anwendungen auf der JVM massiv verbessern können. Details dazu in dem Blog-Post https://blogs.oracle.com/nashorn/entry/nashorn_performance_work_in_the.
Es gibt Software, die ist so stabil, dass Änderungen sehr selten sind. Dazu zählt JUnit, was nun in der Version 4.12 erschienen ist. Die Änderungen listet die Github-Seite (ja, auch JUnit ist bei Git gelandet) auf: https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.12.md. Das allermeiste ist sehr speziell.
…gibt der Artikel http://code.makery.ch/blog/javafx-dialogs-official/ mit vielen Screenshots.
Wer viel mit JavaScript arbeitet, wird sich über eine Lösung von FaceBook freuen, die JS-Code statisch prüft, um Typfehler zu finden. Mehr unter ttps://code.prod.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/ und auf der Hauptseite http://flowtype.org/.
Ein Beispiel:
/* @flow */ function foo(x) { return x * 10; } foo('Hello, world!');
Führt zu nach dem Aufruf vom Kommandozeilenprogramm flow zum Fehler:
01_HelloWorld/hello.js:7:5,17: string This type is incompatible with 01_HelloWorld/hello.js:4:10,13: number