Damit beschäftigt sich https://applidium.com/en/news/unbundling_pokemon_go/.
Allgemein
Java 8 Update 101 erschienen
Oracle hat heute das Update 101 der Java 8 SE-Bibliothek veröffentlicht und behebt damit diverse Fehler und Sicherheitslücken.
Auch die Stabilität und Performance soll verbessert worden sein.
Java SE Embedded Compact Profiles
Hat ein System beschränkten Speicher, wird es knapp für das gesamte Java SE. Daher gibt es Teilmengen der Java SE, genannt Profiles, die nur knapp über 11 MiB benötigen. Im Moment gibt es drei Profile, also drei Teilmengen der Java SE, die jeweils immer etwas mehr können. compact1 ist die kleinste Teilmenge, wo zum Beispiel die Kernklassen enthalten sind, compact2 nimmt die API für Datenbankverbindungen mit auf, compact3 kann dann XML-Verarbeitung und die komplette Java SE grafische Oberflächen darstellen oder Web-Services deklarieren.
Jede Klasse ist einem Profil zugeordnet, was der Compiler statisch prüfen kann – solange der Klassenname nicht dynamisch bestimmt wird. So lässt sich sicherstellen, dass nur Typen referenziert werden, die auch in einem Profil sind.
Oracle Java Standard Edition Embedded (Oracle Java SE Embedded)
Oracle unterstützt mit der Oracle Java Standard Edition Embedded (Oracle Java SE Embedded)[1] Profile. Allerdings laden Entwickler keine einfache Laufzeiumgebung herunter, sondern ein Werkzeug JRECreate, mit dem eine Laufzeitumgebung mit unseren eigenen Paketen für ein bestimmtes System generiert wird. Drei Laufzeitumgebungen sind wählbar: eine Minimal-JVM, Client JVM (schnelle Reaktionsfähigkeit), Server JVM (verbraucht mehr Hauptspeicher). Sehr fein kann dann bestimmt werden, ob JavaFX mit dabei sein soll, oder welche Sprachübersetzungen mit ausgeliefert werden. Am Ende steht ein Verzeichnis mit bin und JRE, lib und Java-Archiven, Konfigurationen und – das darf bei Oracle auf keinen Fall fehlen – Copyright- und Lizenz-Dokumenten.
[1] http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html
Eclipse 4.6 (Neon) News
Alle News unter https://www.eclipse.org/eclipse/news/4.6/platform.php.
Interessant sind:
Commands and shortcuts to zoom in text editors | In text editors, you can now use Zoom In (Ctrl++ or Ctrl+=) and Zoom Out (Ctrl+-) commands to increase and decrease the font size.Like a change in the General > Appearance > Colors and Fonts preference page, the commands persistently change the font size in all editors of the same type. If the editor type’s font is configured to use a default font, then that default font will be zoomed. |
Full Screen | The Full Screen feature is now also available on Windows and Linux. You can toggle the mode via shortcut (Alt+F11) or menu (Window > Appearance > Toggle Full Screen).When Full Screen is activated, you’ll see a dialog which tells you how to turn it off again.
On the Mac, Window > Toggle Full Screen (Control+Command+F) still works as before. |
Substring code completion | Content Assist now supports substring patterns. Enter any part of the desired proposal’s text, and Content Assist will find it! For example, completing on selection proposes all results containing selection as a substring.![]() This feature can be disabled using the Show substring matches option on the Java > Editor > Content Assist preference page. |
Clean Up to remove redundant type arguments | A new option to remove redundant type arguments has been added under the „Unnecessary Code“ group of the Clean Up profile.![]() |
Create new fields from method parameters | You can now assign all parameters of a method or constructor to new fields at once using a newQuick Assist (Ctrl+1):![]() |
Quick Fix to configure problem severity | You can now configure the severity of a compiler problem by invoking the new Quick Fix (Ctrl+1) which opens the Java > Compiler > Errors/Warnings preference page and highlights the configurable problem.![]() The Quick Fix icon may look familiar to you. In older Eclipse versions, this was a toolbar button in enriched hovers (i.e., you had to press F2 or move the mouse into the hover to see it). |
Scene Builder 8.2.0
Für alle JavaFX-Freunde: Siehe http://gluonhq.com/open-source/scene-builder/ und http://gluonhq.com/scene-builder-8-2-0-now/.
H2-Datenbank nun auf GitHub
Interessante Open-Source-Libs Mai
- http://electron.atom.io/. Das vielleicht zur Zeit heißeste Framework, um JS-Anwendungen zu Desktop-Anwendungen zu machen. Siehe auch https://github.com/electron/electron.
- https://github.com/nlp-compromise/nlp_compromise. Kleine JS-Lib (die auch mit der JS-Engine in Java abgarbeitet werden kann) zum Zerlegen von englischen Sätzen in einzelnde Bestandteile.
- https://github.com/google/flexbox-layout. CSS-Flexlayout für Android.
- https://panopticon.re/. Ein Decompiler mit grafischer Qt-Anzeige, auch für den betagten MOS 65xx.
- https://lodash.com/. JavaScript Utility Bibliohek.
- https://github.com/typicode/lowdb. Super kleine JavaScript-Datenbank für die Serverseite, gut für Tests
- http://www.chartjs.org/. Hübsche HTML5-Char Lib
Update von Retrolambda
Java 8 Sprachfeatures für Java 7, 6, 5 VM. Details unter https://github.com/orfjackal/retrolambda. Die Updates von letzter Woche:
Retrolambda 2.3.0 (2016-04-30)
- Optimize generated code to reduce method count (Issue #81)
- Alter when accessor methods are generated (Pull request #84)
- Remove NEW, DUP instructions when changing NEWINVOKESPECIAL to INVOKESTATIC (Pull request #85)
- Skip access method when lambda body method can be promoted (Pull request #86)
- Fix method reference to protected method in base class in other package failing with IllegalAccessError (Issue #89)
Retrolambda 2.2.0 (2016-04-29)
- Backports calls to
Objects.requireNonNull
, improving JDK 9 support (Issue #75) - Optimize generated code to reduce method count (Issue #81)
- Detect and omit the JVM’s lambda factory method (Pull request #82)
Java SE 8u9[1|2] Update
Alles News unter http://www.oracle.com/technetwork/java/javase/8all-relnotes-2226344.html.
Interessanbt finde ich unter anderem:
New JVM Options added: ExitOnOutOfMemoryError and CrashOnOutOfMemoryError
Two new JVM flags have been added:
- ExitOnOutOfMemoryError – When you enable this option, the JVM exits on the first occurrence of an out-of-memory error. It can be used if you prefer restarting an instance of the JVM rather than handling out of memory errors.
- CrashOnOutOfMemoryError – If this option is enabled, when an out-of-memory error occurs, the JVM crashes and produces text and binary crash files (if core files are enabled).
See JDK-8138745.
Und:
Disable MD5withRSA signature algorithm in the JSSE provider
The MD5withRSA signature algorithm is now considered insecure and should no longer be used. Accordingly, MD5withRSA has been deactivated by default in the Oracle JSSE implementation by adding „MD5withRSA“ to the „jdk.tls.disabledAlgorithms“ security property. Now, both TLS handshake messages and X.509 certificates signed with MD5withRSA algorithm are no longer acceptable by default. This change extends the previous MD5-based certificate restriction („jdk.certpath.disabledAlgorithms“) to also include handshake messages in TLS version 1.2. If required, this algorithm can be reactivated by removing „MD5withRSA“ from the „jdk.tls.disabledAlgorithms“ security property.JDK-8144773 (not public)
Bouncing ball in a Swing window
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class BouncingBall { private static class BallPanel extends JPanel { // http://www.iconfinder.com/icondetails/8839/64/beach_ball_tourism_toys_icon private final Icon ball = new ImageIcon( BouncingBall.class.getResource( "ball.png" ) ); private int ballX, ballY, dx = 2, dy = 2; public BallPanel() { new Timer( 10, new ActionListener() { @Override public void actionPerformed( ActionEvent evt ) { ballX += dx; ballY += dy; if ( ballX <= 0 || ballX + ball.getIconWidth() >= getWidth() ) dx = -dx; if ( ballY <= 0 || ballY + ball.getIconHeight() >= getHeight() ) dy = -dy; repaint(); } } ).start(); } @Override public void paint( Graphics g ) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ); g2d.setRenderingHint( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY ); g2d.setColor( Color.WHITE ); g2d.fill( getBounds() ); ball.paintIcon( null, g2d, ballX, ballY ); } } public static void main( String[] args ) { JFrame f = new JFrame(); f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); f.setIgnoreRepaint( true ); f.add( new BallPanel() ); f.setBounds( 200, 100, 400, 200 ); f.setVisible( true ); } }
Eclipse 4.5 SR2 freigeben
Update von von Eclipse 4.5 (MARS.2/Eclipse 4.5.2).
Holt es euch hier: https://eclipse.org/downloads/
Offene Stelle Junior Software-Entwickler in Frankfurt
Zur Unterstützung unseres Teams suchen wir eine(n)
Junior Software – Entwickler / Developer Java (m/w)
- Mitarbeit an der Weiterentwicklung unserer Java Software-Produkte für statistische Fragestellungen
- Mitarbeit an der Neuentwicklung eines Frameworks zur Automatisierung unserer Arbeitsabläufe und zur Integration in bestehende Auswertungssysteme unseres Kunden
- Mitarbeit an der Weiterentwicklung unserer bestehenden Java-Software zum Einsatz in Big Data Umfeldern
- abgeschlossenes Studium mit IT-Bezug bzw. eine entsprechende Ausbildung zum (Fach)-Informatiker
- gute Kenntnisse in Core Java, Java EE, Java SE (relevante Uni-, Ausbildungs- oder Praxiserfahrung)
- gute Kenntnisse in Eclipse, Git, Linux Shell
- Praxiserfahrung als Softwareentwickler wünschenswert
- Selbständiges Arbeiten
- Teamfähigkeit, Engagement und Kreativität
- sehr gute Deutschkenntnisse in Wort und Schrift
- unbefristete Festanstellung
- interessante Aufgaben und überdurchschnittliche finanzielle Entwicklungsmöglichkeiten
- kleines, motiviertes Team mit flachen Hierarchien
- freundliches und dynamisches Arbeitsumfeld in der Frankfurter Innenstadt (S/U-Bahn-Station Konstablerwache)
- eine solide berufliche Zukunft
- flexible Arbeitszeiten
- Reisetätigkeit nur in Ausnahmefällen
- Beginn ab sofort, bzw. nach Absprache
- Dann freuen wir uns unter dem Betreff „Stellenangebot Junior Software-Entwickler / Developer Java” auf Ihre aussagekräftige Bewerbung (ausschließlich via E-Mail) mit Angabe der Gehaltsvorstellung und des möglichen Eintrittstermins.

Jens Grüntjes
Zeil 57
60313 Frankfurt
Tel.: 069 / 92 88 79-18
E-Mail: jens.gruentjes@ankordata.de
Das Ende vom Java-Plugin für Web-Browser
Oracle hat angekündigt, dass das Java-Plugin für Web-Browser mit dem Erscheinen von Java 9 im nächsten Jahr nicht mehr weiterentwickelt wird.
Nachdem Mozilla Firefox und auch Google Chrome ankündigten, das Java-Plugin nicht mehr weiter unterstützen zu wollen, sind das offenbar u. a. Gründe für den Abschied vom Browser-Plugin.
Der Anteil von Java-Applets ist ohnehin kaum noch „messbar“, spätestens mit dem Java 7 Update 51, mit dem die Sicherheitsmechanismen für Java-Applets noch einmal deutlich überarbeitet wurden, sind Java-Applets in „freier Wildbahn“ kaum noch zu finden.
Oracle empfiehlt als Ersatz Java WebStart, das ohne das Plugin auskommt.
Link: Aufforderung: Neue Java-Updates mit Deinstallation von Alten
http://www.heise.de/newsticker/meldung/Oracle-muss-Java-Updates-nachbessern-3052761.html
Android N basiert auf OpenJDK nicht mehr auf eigener Google-Java-API-Implementierung
Apache POI 3.14-beta1 ist erschienen
Was es für Änderungen gibt? https://poi.apache.org/changes.html
The Apache POI team is pleased to announce the release of 3.14-beta1. Featured are a handful of new areas of functionality – including basic support for the XML Visio format – and numerous bug fixes.
A summary of changes is available in the Release Notes. A full list of changes is available in the change log. People interested should also follow the dev list to track progress.
The POI source release as well as the pre-built binary deployment packages are listed below. Pre-built versions of all POI components are available in the central Maven repository under Group ID „org.apache.poi“ and Version „3.14-beta1“
Alles Gute …
… zum Weihnachtsfest und einen guten Rutsch ins neue Jahr.
* , _/^\_ < > * /.-.\ * * `/&\` * ,@.*;@, /_o.I %_\ * * (`'--:o(_@; /`;--.,__ `') * ;@`o % O,*`'`&\ * (`'--)_@ ;o %'()\ * /`;--._`''--._O'@; /&*,()~o`;-.,_ `""`) * /`,@ ;+& () o*`;-';\ (`""--.,_0 +% @' &()\ /-.,_ ``''--....-'`) * * /@%;o`:;'--,.__ __.'\ ;*,&(); @ % &^;~`"`o;@(); * /(); o^~; & ().o@*&`;&%O\ jgs `"="==""==,,,.,="=="==="` __.----.(\-''#####---...___...-----._ '` \)_`"""""` .--' ') o( )_-\ `"""` `
Java 9-Unterstützung in der kommenden Eclipse-Version 4.6 (Neon)
https://marketplace.eclipse.org/content/java-9-support-beta-neon. Java 9 muss installiert sein.
Inselraus: Swings Farbauswahldialog JColorChooser
Mit einem JColorChooser lassen sich Farben über drei unterschiedliche Reiter auswählen. Der Benutzer hat die Auswahl zwischen vordefinierten Farben, HSB-Werten und RGB-Werten. Um den Farbauswahldialog auf den Bildschirm zu bekommen, genügt ein Aufruf von JColorChooser.showDialog(Component, String, Color) mit drei Argumenten: einem Component-Objekt (dem Vater des Dialogs), dem Titel und einer Anfangsfarbe. Beendet der Benutzer den Dialog, wird als Rückgabewert die ausgewählte Farbe geliefert. Wird der Dialog abgebrochen, so ist der Rückgabewert null:
JFrame f = new JFrame(); f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); JButton b = new JButton( "Farbe ändern" ); f.add( b ); b.addActionListener( new ActionListener() { @Override public void actionPerformed( ActionEvent e ) { Component comp = (Component) e.getSource(); Color newColor = JColorChooser.showDialog( null, "Wähle neue Farbe", comp.getBackground() ); comp.setBackground( newColor ); } } ); f.pack(); f.setVisible( true );
Den Aufruf mit showDialog(…) einzuleiten, ist nicht der einzige Weg. Wir können auch den Konstruktor nutzen und dieses Exemplar später mit JColorChooser.createDialog(…) übergeben und anzeigen.
class javax.swing.JColorChooser
extends JComponent implements Accessible
- JColorChooser()
Erzeugt einen neuen Farbauswahldialog. - JColorChooser(Colorc)
Erzeugt einen neuen Farbauswahldialog mit einer vordefinierten Farbe. - staticColorshowDialog(Componentc,Stringtitle,ColorinitialColor)
Zeigt einen modalen Farbauswahldialog. - staticJDialogcreateDialog(Componentc,Stringtitle,booleanmodal,
JColorChooser chooserPane, ActionListener okLis, ActionListener cancelLis)
Erzeugt einen neuen Dialog aufgrund des JColorChooser-Objekts mit Standardschaltflächen zum Bestätigen und Abbrechen.
JColorChooser-Objekte als spezielle Komponenten
Neben der statischen Methode showDialog(…) lässt sich auch der Konstruktor nutzen, um ein JColorChooser als spezielles JComponent-Objekt aufzubauen. Das bringt den Vorteil mit sich, dass die Farbauswahl nicht zwingend in einem eigenständigen Dialog stattfinden muss, sondern dass im Fall einer Komponente diese zusammen mit anderen Komponenten auf einen Container gesetzt werden kann. Änderungen an der Auswahl registriert ein ChangeListener, der etwa so angewendet wird:
chooser.getSelectionModel().addChangeListener( new ChangeListener() { @Override public void stateChanged( ChangeEvent e ) { Color c = ((ColorSelectionModel) e.getSource()).getSelectedColor(); } } );
Weitere Beispiele finden sich unter http://www.java2s.com/Code/Java/Swing-JFC/Color-Chooser.htm. Wie ein neuer Reiter mit über 50 Schattierungen in der Graustufenanzeige eingebracht wird, zeigt etwa http://www.java2s.com/Code/Java/Swing-JFC/JColorChooserdialogwiththecustomGrayScalePanelpickertab.htm.
Inselraus: Undo unter Swing durchführen
Gute Benutzerschnittstellen zeichnen sich dadurch aus, dass dem Benutzer Fehler unterlaufen dürfen. Die Änderungen müssen jedoch wieder zurückgenommen werden können. Um dies in Java zu realisieren, gibt es Unterstützung durch ein Paket javax.swing.undo. Mit ihm lassen sich Undo- und Redo-Operationen mit relativ wenig Aufwand realisieren. Unser Beispiel soll ein Textfeld zeigen, dessen Änderungen auf Knopfdruck rückgängig gemacht werden. Zentrales Objekt ist dabei ein UndoManager. Dieser sammelt einzelne Aktionen, im Fall von Benutzereingaben jedes Zeichen. Die Anzahl der zu speichernden Aktionen ist beschränkt, lässt sich aber anpassen. Wir wollen in einem Beispiel ein JTextField mit einem Standardtext erzeugen. Anschließend wird ein UndoManager mit dem Document-Objekt des Textfeldes verbunden. Das Document informiert den UndoManager über Änderungen, der UndoManager speichert diese. Wenn eine Schaltfläche aktiviert ist, wird dem UndoManager befohlen, die Aktion rückgängig zu machen. Sichtbar wird dann wieder der Text, so wie er am Anfang in der Textbox stand:
package com.tutego.insel.ui.undo; import java.awt.BorderLayout; import java.awt.event.*; import javax.swing.*; import javax.swing.event.UndoableEditEvent; import javax.swing.undo.*; public class IComeUndone { public static void main( String[] args ) { JFrame f = new JFrame(); f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); final JTextArea textarea = new JTextArea( 20, 40 ); textarea.setText( "Hier zurück" ); f.add( new JScrollPane(textarea) ); // final UndoManager undomanager = new MyUndoManager(); final UndoManager undomanager = new UndoManager(); textarea.getDocument().addUndoableEditListener( undomanager ); undomanager.setLimit( 1000 ); JButton undoB = new JButton( "Undo" ); undoB.addActionListener( new ActionListener() { @Override public void actionPerformed( ActionEvent e ) { undomanager.end(); if ( undomanager.canUndo() ) undomanager.undo(); textarea.requestFocus(); } } ); f.add( undoB, BorderLayout.PAGE_END ); f.pack(); f.setVisible( true ); } }
Um genauer zu sehen, was das UndoManager-Objekt rückgängig macht, schreiben wir eine Unterklasse von UndoManager und überschreiben die Methode undoableEditHappened(UndoableEdit-Event) (diese Methode implementiert UndoManager von der Schnittstelle UndoableEditListener). Geben wir in unserer Realisierung auf dem Bildschirm aus, was bei jeder Aktion in den UndoManager kommt:
class MyUndoManager extends UndoManager { @Override public void undoableEditHappened( UndoableEditEvent e ) { UndoableEdit ue = e.getEdit(); System.out.println( ue ); addEdit( ue ); } }
Die Methode undoableEditHappened(UndoableEditEvent) bekommt ein Ereignisobjekt, in dem der Verweis auf eine zurücknehmbare Operation abgelegt ist. An diese kommen wir mit get-Edit(). Die Rückgabe ist ein UndoableEdit-Objekt, also genau eine Operation, die zu einem Undo und Redo fähig ist. Der UndoManager speichert diese mit dem Aufruf von addEdit() in einer Datenstruktur ab. Wenn wir das UndoableEdit-Objekt auf dem Bildschirm ausgeben, sehen wir unsere durchgeführte Operation, zum Beispiel bei einem Einfügen:
[javax.swing.text.GapContent$InsertUndo@497934 hasBeenDone: true alive: true]
Beim Löschen erkennen wir ein:
[javax.swing.text.GapContent$RemoveUndo@ca470 hasBeenDone: true alive: true]