Ich bin auf der Suche nach (bezahlten) Experten im Bereich JbossMQ. Wir haben uns natürlich zuerst an RedHat gewannt mit unserer Anfrage. Die Annahme war, wir könnten uns eine Fragestunde mit einem der Entwickler kaufen (für eine spezifische 4.2 JBoss Version). Leider bietet RedHat diese Option nicht an. Deswegen haben wir uns sogar überlegt eine entsprechende Partnerschaft mit Support Vertrag abzuschliessen. Leider würde uns auch die nicht ermöglichen unsere bisherige Release Stratagie weiterzufahren, mal ganz abgesehen davon dass wir erheblichen Zusatzaufwand (Arbeit, Geld) für die Kundenlizensierung aufbringen müßten. Effektiv wäre dies ein embedded kommerzielles Produkt, was wir uns damit einhandeln würden.
Diese unflexiblen Haltung ist eine Enttäuschung für uns. Es sieht danach aus, dass RH sich für dieses Vorgehen entschieden hat aus der Angst mit bezahltem Support für Jboss.org sich das Geschäftsmodell für JBoss.com kaputt zu machen. Diese Strenge Trennung zwischen den Produkten und die Distanzierung von der Community war mir so bis dahin noch nicht bewusst geworden.
Aus dem Grund suche ich jetzt Entwickler (idealerweise Commiter) die sich mit JBossMQ auskennen (konkret geht es um das bekannte Problem dass MDBs sich aufhängen). Wir bezahlen nach Aufwand, bitte direkt Kontakt mit mir aufnehmen.
Diese unflexiblen Haltung ist eine Enttäuschung für uns. Es sieht danach aus, dass RH sich für dieses Vorgehen entschieden hat aus der Angst mit bezahltem Support für Jboss.org sich das Geschäftsmodell für JBoss.com kaputt zu machen. Diese Strenge Trennung zwischen den Produkten und die Distanzierung von der Community war mir so bis dahin noch nicht bewusst geworden.
Aus dem Grund suche ich jetzt Entwickler (idealerweise Commiter) die sich mit JBossMQ auskennen (konkret geht es um das bekannte Problem dass MDBs sich aufhängen). Wir bezahlen nach Aufwand, bitte direkt Kontakt mit mir aufnehmen.
Es ist immer wieder interessant die Analysen von Dan Dyer zu lesen. Er ist der Kopf hinter Java library uncommons-math, die insbesondere brauchbare Alternativen für Zufallszahlengeneratoren liefert.
int[] vals = new int[8];
for (int i = 0; i < 1500; i++)
vals[new Random(i).nextInt(8)]++;
System.out.println(Arrays.toString(vals));Dass dieser Code "falsch" ist weil er jeweils einen neuen PRNG erzeugt ist offensichtlich, warum es aber keinerlei vernünftig verteilte Zufallszahlen liefert (trotz den unterschiedlichen Seeds) ist eine ganz andere Sache, die er in seinem Artikel gut beschreibt.Unknown state 0. Please contact the creator of my caller ..impl.SHCInitiatorProcessor.init(SHCInitiatorProcessor.java:155) and tell her/him to please use some states that do not make me sad. This warning has no further impact.
Die IBM JVM unterscheidet sich in einigen Aspekten deutlich von der Sun JVM. Im Bereich Betrieb gibt es eine ganze Reihe von Features die im IBM Java Diagnostics Guide (5.0, 6.0) zusammengefasst sind. Einen Bereich - den Java Heapdump - möchte ich hier mal näher beleuchten:
Die IBM JVM kennt den klassischen Java Heap Dump, also einen Abzug der Java Objekte im Speicher. Diese Heap Dumps gibt es in verschiedenen Formaten. IBM unterstützt eine Textvariante und das sogenannten Portable Heap Dump Format, eingeschaltet mit -Xdump:heap. Problem ist, dass es nur von IBM Analysetools ausgewertet werden kann. Einer der besten freien Heap Dump Betrachtern ist das von der SAP gestiftete Projekt Eclipse MAT. Im Sun Umfeld sind diese Heap Dumps im HPROF Binary Format. Das Memory Analyser Tool kann deswegen Dumps von Sun, SAP und HP VM lesen. Gerade hat aber IBM ein Eclipse Pluging bereitgestellt, den IBM DTFJ Adapter. Dieses Plugin der den MAT um Import Möglichkeiten erweitert kann aber das PHD Format nicht verarbeiten.
Die Java spezifischen Heap Dumps haben ein Vorbild: die Speicherabzüge (Core Dumps) der Betriebsysteme. Core Files oder Dr.Watson Logfiles werden angelegt wenn eine Anwendung eine kritische Ausnahme verursacht (z.B. Zugriffsschutzfehler). Im Falle der IBM VM kann man solche Core Dumps aber ebenfalls für die Analyse von Java Heaps verwenden. Die von IBM genannten System Dumps werden mit der -Xdump:system option bei der VM eingeschaltet.
Wenn ein Core Dump stattfindet (entweder bei OutOfMemeoryErrors, bei Signalen, einem echten JVM Crash oder bei frei definierbaren Events) so wird dieser im System spezifischen Format in ein File geschrieben. IBM liefert ein Tool mit das sich jextract nennt (und im JRE Unterverzeichnis des SDK zu finden ist). Man muss dabei die jextract Version direkt aus dem verwendeten JRE nehmem (insbesondere auch auf dem Rechner auf dem der Coredump erzeugt wurde). Dies packt den aufbereiteten Core Dump zusammen mit systemspezifischen Details (z.B. Kopien der Symbole in den Libraries) in ein ZIP File.
Dieses bearbeitete ZIP File kann direkt in den MAT (mit IBM Update) importiert werden. Meiner Erfahrung nach klappt dies nur, wenn jextract keine Warnung oder Fehler gemeldet hat. Der Ansatz auf dem Produktivsystem den Dump vorzuverarbeiten finde ich ganz geschickt, denn nicht immer hat der Entwickler Zugriff auf ein System mit vergleichbarer Kapazität. Übrigens kann dieses ZIP auch von dem IBM Diagnose Tool Framework for Java verarbeitet werden, so kann man Analyseprogramme die den Heap durchsuchen auch direkt in Java schreiben und auf dem Produktivserver ausführen.
Die IBM JVM kennt den klassischen Java Heap Dump, also einen Abzug der Java Objekte im Speicher. Diese Heap Dumps gibt es in verschiedenen Formaten. IBM unterstützt eine Textvariante und das sogenannten Portable Heap Dump Format, eingeschaltet mit -Xdump:heap. Problem ist, dass es nur von IBM Analysetools ausgewertet werden kann. Einer der besten freien Heap Dump Betrachtern ist das von der SAP gestiftete Projekt Eclipse MAT. Im Sun Umfeld sind diese Heap Dumps im HPROF Binary Format. Das Memory Analyser Tool kann deswegen Dumps von Sun, SAP und HP VM lesen. Gerade hat aber IBM ein Eclipse Pluging bereitgestellt, den IBM DTFJ Adapter. Dieses Plugin der den MAT um Import Möglichkeiten erweitert kann aber das PHD Format nicht verarbeiten.
Die Java spezifischen Heap Dumps haben ein Vorbild: die Speicherabzüge (Core Dumps) der Betriebsysteme. Core Files oder Dr.Watson Logfiles werden angelegt wenn eine Anwendung eine kritische Ausnahme verursacht (z.B. Zugriffsschutzfehler). Im Falle der IBM VM kann man solche Core Dumps aber ebenfalls für die Analyse von Java Heaps verwenden. Die von IBM genannten System Dumps werden mit der -Xdump:system option bei der VM eingeschaltet.
Wenn ein Core Dump stattfindet (entweder bei OutOfMemeoryErrors, bei Signalen, einem echten JVM Crash oder bei frei definierbaren Events) so wird dieser im System spezifischen Format in ein File geschrieben. IBM liefert ein Tool mit das sich jextract nennt (und im JRE Unterverzeichnis des SDK zu finden ist). Man muss dabei die jextract Version direkt aus dem verwendeten JRE nehmem (insbesondere auch auf dem Rechner auf dem der Coredump erzeugt wurde). Dies packt den aufbereiteten Core Dump zusammen mit systemspezifischen Details (z.B. Kopien der Symbole in den Libraries) in ein ZIP File.
Dieses bearbeitete ZIP File kann direkt in den MAT (mit IBM Update) importiert werden. Meiner Erfahrung nach klappt dies nur, wenn jextract keine Warnung oder Fehler gemeldet hat. Der Ansatz auf dem Produktivsystem den Dump vorzuverarbeiten finde ich ganz geschickt, denn nicht immer hat der Entwickler Zugriff auf ein System mit vergleichbarer Kapazität. Übrigens kann dieses ZIP auch von dem IBM Diagnose Tool Framework for Java verarbeitet werden, so kann man Analyseprogramme die den Heap durchsuchen auch direkt in Java schreiben und auf dem Produktivserver ausführen.
Immer mal wieder erreichen mich seltsame Blindbewerbungen. Ab und zu frage ich sogar nach, woher denn die Annahme stammt, ich würde Stellen anbieten. Bisher habe ich noch nie eine Reaktion erhalten. Deswegen nehme ich mir die Freiheit das Anschreiben einer solchen Blindbewerbung hier zur Unterhaltung wiederzugeben. Zum besseren Verständnis habe ich meine Gedanken eingefügt :)
Sehr geehrte Damen und Herren,
ich bewerbe mich bei Ihnen als Java/J2EE-Entwickler. Nach jahrelangem Studium [ohne Abschluss] mit Schwerpunkten Künstliche Intelligenz und Computergrafik und mit breit angelegter Informatik-Bildung, habe ich mich entschieden, meinen Schwerpunkt einer angehenden Arbeitstätigkeit im Java-Umfeld zu suchen.
Ich bin qualifiziert, die von Ihnen [nicht] angebotene Tätigkeit auszuüben, da ich bereits während meines Studiums Erfahrungen mit der Konzeptionierung und Realisierung von Software-Projekten, in Gruppen mit jeweils mehreren Personen [Ah, da hat doch Tatsächlich jemand die Seminare und Übungen besucht] gemacht habe. [Ich habe sonst keinerlei Praxiserfahrung]
Während des Studiums habe ich immer wieder mit Java programmiert, zumeist Applets [entsprechend Umfanreich waren diese Gruppenprojekte]. Bis vor kurzem befand ich mich in einer Java-Weiterbildungsmaßnahme [denn ich muss trotz Studium mich vom Arbeitsamt aushalten lassen], um die ich mich selbst seit langem bemüht habe [in der Zeit hätte ich sonst arbeiten müssen], da zum einen in Stellenangeboten frequentiert nach Java-Programmierern nachgefragt wurde, andererseits Java eine mir leicht zur Hand gehende Programmiersprache in Erinnerung geblieben war. [Ist zwar schon Jahre her, aber wenn es sonst keine Jobs gibt...]
Ich freue mich, wenn Sie mich zu einem Vorstellungsgespräch einladen würden. Für Rückfragen - auch per E-Mail - stehe ich Ihnen gern auch kurzfristig zur Verfügung.
Mit freundlichen Grüßen
Name der Redaktion bekannt
In einer Panik-artigen Aktion hat Sun einige neue Features gesammelt und als Update für Java 6 im Project Update-N oder Update 10 zusammengefasst. Darunter fallen Verbesserungen für die Installation (Inkrementeller Download), Beschleunigung von Grafik und Swing und ein neues Java Plugin (für Applets).
Am 15. Oktober fand dann die FCS statt, das Java SE 6 Update 10 ist jetzt zum Download verfügbar. Ich bin mal gespannt wie viele Probleme dieses mal auftreten werden in existierenden Anwendungen.
Interessant ist auch, dass Sun nach Jahren wieder (Anfang Oktober) ein JDK für Itanium anbietet. Die 64bit JVM wird für Linux und Windows angeboten. Im Bereich Tooling (VisualVM, JavaDB) und Plugin (Applet) sowie im Bereich Multi Media (Linux Alsa Sound) existieren allerdings starke Einschränkungen. Eignet sich so nur für den Server Einsatz. HP dürfte mit seiner JRE für IA64 aber deutlichen Optimierungsvorsprung haben.
Update: InfoQ hat einen interessanten engl. Artikel.
Am 15. Oktober fand dann die FCS statt, das Java SE 6 Update 10 ist jetzt zum Download verfügbar. Ich bin mal gespannt wie viele Probleme dieses mal auftreten werden in existierenden Anwendungen.
Interessant ist auch, dass Sun nach Jahren wieder (Anfang Oktober) ein JDK für Itanium anbietet. Die 64bit JVM wird für Linux und Windows angeboten. Im Bereich Tooling (VisualVM, JavaDB) und Plugin (Applet) sowie im Bereich Multi Media (Linux Alsa Sound) existieren allerdings starke Einschränkungen. Eignet sich so nur für den Server Einsatz. HP dürfte mit seiner JRE für IA64 aber deutlichen Optimierungsvorsprung haben.
Update: InfoQ hat einen interessanten engl. Artikel.
Ich installiere gerade eine Java Anwendung in einem Windows 2008 Server.
Dabei verwende ich ein Windows XP als Host, Sun's VirtualBox als VMM und das Windows 2008 Core Edition liegt als dynamisch wachsende virtuelle Festplatte im VHD Format vor.
Jetzt trat das Problem auf, dass der Host nicht mehr genug Speicherplatz für das wachsende Image hatte. Dies wurde dem Java Programm sauber als IOException gemeldet, aber als Reason wird (verständlicherweise) kein "file system full" oder "no space on device" gegeben, sondern die Meldung:
"The drive cannot find the sector requested"
Dies ist verständlich, wenn man sich vor Augen hält dass der IDE Treiber den Fehlerzustand an das NTFS des Guests melden muss. Ein "Kann den Sektor nicht belegen" ist so ziemlich der passendste Fehler der man sich in der Schicht denken kann.
Dieser Bug ist übrigens extrem kritisch. Im Gegensatz zur Platznot im Filesystem - von der sich das Filesystem wieder erholen kann - sind Allocation Fehler von beliebigen Sektoren deutlich kritischer, insbesondere wenn das bei Filesystem Meta Blöcken passiert statt bei Datenblöcken. Schnell kann das Filesystem dann aussteigen. Dies wiederum ist der Tot des Servers, wenn es sich dabei um System-Partition oder Swap-Partition handelt. Diese Laufwerksarten sollte man also in einer virtualisierten Umgebung niemals auf eine virtuelle Disk mit uncommited Speicher legen. Sicher kann man damit etwas Platz sparen und wenn man das ganze überwacht passiert es selten. Aber wenn es passiert, so kann man den Guest erst mal rebooten (worst case).
Dabei verwende ich ein Windows XP als Host, Sun's VirtualBox als VMM und das Windows 2008 Core Edition liegt als dynamisch wachsende virtuelle Festplatte im VHD Format vor.
Jetzt trat das Problem auf, dass der Host nicht mehr genug Speicherplatz für das wachsende Image hatte. Dies wurde dem Java Programm sauber als IOException gemeldet, aber als Reason wird (verständlicherweise) kein "file system full" oder "no space on device" gegeben, sondern die Meldung:
"The drive cannot find the sector requested"
Dies ist verständlich, wenn man sich vor Augen hält dass der IDE Treiber den Fehlerzustand an das NTFS des Guests melden muss. Ein "Kann den Sektor nicht belegen" ist so ziemlich der passendste Fehler der man sich in der Schicht denken kann.
Dieser Bug ist übrigens extrem kritisch. Im Gegensatz zur Platznot im Filesystem - von der sich das Filesystem wieder erholen kann - sind Allocation Fehler von beliebigen Sektoren deutlich kritischer, insbesondere wenn das bei Filesystem Meta Blöcken passiert statt bei Datenblöcken. Schnell kann das Filesystem dann aussteigen. Dies wiederum ist der Tot des Servers, wenn es sich dabei um System-Partition oder Swap-Partition handelt. Diese Laufwerksarten sollte man also in einer virtualisierten Umgebung niemals auf eine virtuelle Disk mit uncommited Speicher legen. Sicher kann man damit etwas Platz sparen und wenn man das ganze überwacht passiert es selten. Aber wenn es passiert, so kann man den Guest erst mal rebooten (worst case).
Geschrieben von Bernd Eckenfels
in Hardware, Infrastruktur, Java Programming
| Kommentare (0)
| Trackbacks (0)
Virtuelle Realitäten wie Second Life werden ja schon für Geschäftsmeetings (z.B. Vorträge) genutzt. Sun arbeitet mit Project Wonderland an einer Plattform, die speziell für die Zusammenarbeit in Teams ausgelegt ist.
Hier ein nettes Demo Movie der Telefon Integration in Wonderland. Und eine ältere Demo des "virtuellen" Sun Gebäudes MPK20.
Das ganze ist verspielt, und es muss sich erst zeigen ob Konferenzteilnehmer dadurch wirklich Produktivität gewinnen und nicht verlieren, aber unterhaltsam ist es allemal.
Hier ein nettes Demo Movie der Telefon Integration in Wonderland. Und eine ältere Demo des "virtuellen" Sun Gebäudes MPK20.
Das ganze ist verspielt, und es muss sich erst zeigen ob Konferenzteilnehmer dadurch wirklich Produktivität gewinnen und nicht verlieren, aber unterhaltsam ist es allemal.
Heute finden an der Uni-Karlsruhe gleich zwei interessante Termine statt. Die Java User Group Karlsruhe musste deswegen in den Raum -102UG in der Informatik Fakultät ausweichen, dort gibt es um 19:15Uhr (-21:15) einen Vortrag von Dr. Patrick Schemitz (Netpioneer GmbH) zum Thema Grundladen [Web] Security Auditing.
In -101UG spricht Dr. York Sure von SAP Research im Rahmen der GI/ACM Regionalgruppe Karlsruhe über Internet of Services. Dabei geht es um den Einsatz von Semantischen Technologien bei der Vermarktung von Internet Services.
Beide Termine finden sich auf dem IT-Kalender des Stadtblog KA. Dort findet sich auch eine Ankündigung für Morgen: Gründung des "Verein der Karlsruher Software-Ingenieure" um 16:00-18:00 am FZI. Näheres dazu in der Presseerklärung von FZI, KIT, adrena objects, 1&1, SAP und HsK.
Ich werde wohl bei der JUG-KA vorbeischauen heute Abend und mir Morgen die Info Veranstaltung ansehen.
In -101UG spricht Dr. York Sure von SAP Research im Rahmen der GI/ACM Regionalgruppe Karlsruhe über Internet of Services. Dabei geht es um den Einsatz von Semantischen Technologien bei der Vermarktung von Internet Services.
Beide Termine finden sich auf dem IT-Kalender des Stadtblog KA. Dort findet sich auch eine Ankündigung für Morgen: Gründung des "Verein der Karlsruher Software-Ingenieure" um 16:00-18:00 am FZI. Näheres dazu in der Presseerklärung von FZI, KIT, adrena objects, 1&1, SAP und HsK.
Ich werde wohl bei der JUG-KA vorbeischauen heute Abend und mir Morgen die Info Veranstaltung ansehen.
Geschrieben von Bernd Eckenfels
in Java Programming, Marketing, SOA, Technik
| Kommentare (2)
| Trackbacks (0)
Dieses mal nur schnell einen Pointer zu einer Artikelserie von Jeroen Borgers auf InfoQ. Ich weise ausdrücklich darauf hin dass der erste Teil des Artikels nicht ohne den zweiten Teil genossen werden sollte.
Zusätzlich möchte ich noch auf den Micro Benchmark Runner von Brent Boyer verweisen. Dieser spart ein wenig die manuelle Korrektur und Anpassung der Warmup-Phasen und liefert aussagekräftige statistische Auswertungen. Die developerWorks Artikelserie geht auf diese Verfahren auch noch etwas genauer ein:
Zusätzlich möchte ich noch auf den Micro Benchmark Runner von Brent Boyer verweisen. Dieser spart ein wenig die manuelle Korrektur und Anpassung der Warmup-Phasen und liefert aussagekräftige statistische Auswertungen. Die developerWorks Artikelserie geht auf diese Verfahren auch noch etwas genauer ein:
« vorherige Seite
(Seite 2 von 6, insgesamt 52 Einträge)
nächste Seite »
Layout by Ricky Wilson | Serendipity Template by Carl Galloway | Login
Impressum
Bernd Eckenfels
Mörscher Str. 8
76185 Karlsruhe
bernd-2012@eckenfels.net
Read More

Kommentare