entwickler.de https://entwickler.de PHP, JavaScript, Windows Development Fri, 07 Aug 2020 11:13:08 +0000 de-DE hourly 1 https://wordpress.org/?v=4.8.3 DDD: taktisches Design – Architektur innerhalb eines Bounded Context https://kiosk.entwickler.de/entwickler-magazin/entwickler-magazin-spezial-vol-24/ddd-taktisches-design/ https://kiosk.entwickler.de/entwickler-magazin/entwickler-magazin-spezial-vol-24/ddd-taktisches-design/#respond Fri, 07 Aug 2020 11:03:05 +0000 https://entwickler.de/?p=579941453 Im Artikel von Carola Lilienthal und Michael Plöd wurde gezeigt, wie man eine Domäne in mehrere Bounded Contexts aufteilt. Dabei erhalten wir statt einem großen, schwer verständlichen und schwer wartbaren Domänenmodell nun mehrere, besser handhabbare Domänenmodelle. In diesem Teil der Serie schauen wir darauf, wie man das einzelne Domänenmodell konkret implementieren kann.

Der Beitrag DDD: taktisches Design – Architektur innerhalb eines Bounded Context ist auf entwickler.de erschienen.

]]>
Im Artikel von Carola Lilienthal und Michael Plöd wurde gezeigt, wie man eine Domäne in mehrere Bounded Contexts aufteilt. Dabei erhalten wir statt einem großen, schwer verständlichen und schwer wartbaren Domänenmodell nun mehrere, besser handhabbare Domänenmodelle. In diesem Teil der Serie schauen wir darauf, wie man das einzelne Domänenmodell konkret implementieren kann.

Der Beitrag DDD: taktisches Design – Architektur innerhalb eines Bounded Context ist auf entwickler.de erschienen.

]]>
https://kiosk.entwickler.de/entwickler-magazin/entwickler-magazin-spezial-vol-24/ddd-taktisches-design/feed 0
TypeScript 4.0: Release Candidate veröffentlicht https://entwickler.de/online/javascript/typescript-4-0-release-candidate-579941429.html https://entwickler.de/online/javascript/typescript-4-0-release-candidate-579941429.html#respond Fri, 07 Aug 2020 09:41:38 +0000 https://entwickler.de/?p=579941429 TypeScript 4 ist fast fertig: Die neue Major-Version steht als Release Candidate zum Download bereit. Neuerungen gibt es für die Arbeit mit Tuples. Außerdem können JSX Factories mit dem neuen Release individualisiert werden. Insgesamt müssen sich Entwickler aber keine Sorgen machen: 4.0 ist kein klassisches Major Release und macht einfach nur da weiter, wo 3.9 aufgehört hat.

Der Beitrag TypeScript 4.0: Release Candidate veröffentlicht ist auf entwickler.de erschienen.

]]>
TypeScript 4 ist fast fertig: Die neue Major-Version steht als Release Candidate zum Download bereit. Neuerungen gibt es für die Arbeit mit Tuples. Außerdem können JSX Factories mit dem neuen Release individualisiert werden. Insgesamt müssen sich Entwickler aber keine Sorgen machen: 4.0 ist kein klassisches Major Release und macht einfach nur da weiter, wo 3.9 aufgehört hat.

TypeScript ist auf dem Weg zum Major Release 4.0! Mit der Veröffentlichung des Release Candidates steht die finale Veröffentlichung kurz bevor, die allerdings noch keinen festen Termin hat. Das TypeScript-Team möchte erst noch einige Projekte upgraden und sichergehen, dass die neue Version keine Probleme verursacht. Grundsätzlich sollte das aber nicht viel länger dauern als bei v3.9 und anderen „Minor“-Versionen. Wie Daniel Rosenwasser, Program Manager für TypeScript, nämlich im Blogpost zum Release von TypeScript 4.0 RC erklärt, markiert die Versionsnummer keine außergewöhnlich umfangreichen Breaking Changes. Während im Rahmen der semantischen Versionierung damit zu rechnen wäre, dass eine Major-Version mit Änderungen einhergeht, die einen besonderen Mehraufwand für Projekt-Upgrades bedeuten, ist das bei TypeScript nicht der Fall. TypeScript 4.0 setzt fort, was in v3.9 begonnen wurde. Breaking Changes werden immer in kleinen Schritten ausgerollt, nicht in einem großen Major Release.

Breaking Changes: Was ändert sich in TypeScript 4.0?

Ohne Breaking Changes kommt TypeScript 4.0 allerdings auch nicht aus. Geändert wurden beispielsweise die DOM-Types von lib.d.ts. document.origin, das bisher für alte Versionen des Internet Explorers genutzt wurde, ist entfernt worden. Alternativ steht self.origin zur Verfügung, das aber manuell ausgetauscht werden muss. Auch am Verhalten von Properties abgeleiteter Klassen, die einen Getter oder Setter in der Basisklasse überschreiben wollen, gibt es eine Neuerung, die als Breaking Change gilt. Dieses Verhalten wurde bislang nur bei Accessors als Fehler behandelt, die von Properties geändert wurden oder selbst Properties geändert haben; ab v4.0 wird auch bei Gettern und Settern in Basisklassen eine Fehlermeldung ausgegeben. Breaking Changes finden sich außerdem im Verhalten von strictNullChecks und bei den bislang verwendeten Node Factory Functions, die deprecated wurden.

Neben den Breaking Changes bringt TypeScript 4.0 natürlich auch neue Features mit. Dazu gehört, dass es weiterhin möglich ist, AST Nodes mit Funktionen zu erzeugen. Dafür bringt TypeScript nun ein neues Node Factory API mit. Und im Editor-Support gibt es ein neues Feauture für Deprecations: Wenn eine Declaration im JSDoc-Kommentar mit /**@deprecated*/ markiert ist, wird dies in der Liste von Vorschläge, die im Editor angezeigt werden, künftig markiert. In VS Code werden Vorschläge zur Vervollständigung, die ein als deprecated markiertes Element enthalten, durchgestrichen. Hinsichtlich der Sprache selbst hat sich auch einiges getan. Tuple Types können jetzt flexibler eingesetzt werden, um den „Death by Overload“ zu verhindern, der in manchen Fällen bislang auftrat. TypeScript 4.0 unterstützt darum eine generische Spread-Syntax für Tuple Types. Außerdem können Spread-Elemente jetzt an jeder Stelle des Tuples verwendet werden. Neu eingeführt wurde daneben die Option jsxFragmentFactory, die es erlaubt, JSX Factories individuell zu konfigurieren. Der neue Pragma-Kommentar /** @jsxFrag */ kann beispielsweise genutzt werden, um JSX Factories auf Basis einzelner Dateien zu erstellen.

Alle Informationen zu den neuen Features von TypeScript 4.0 können dem Blogpost zum Release Candidate entnommen werden. Noch handelt es sich um einen Release Candidate, nicht das finale Release, normalerweise sind neue Versionen von TypeScript zu diesem Zeitpunkt aber bereits mit allen neuen Features ausgestattet. Kleiner Änderungen an der Ausgestaltung könnten aber noch vorgenommen werden, bevor die neue Version final erscheint.

Der Beitrag TypeScript 4.0: Release Candidate veröffentlicht ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/javascript/typescript-4-0-release-candidate-579941429.html/feed 0
JEP 374: Das Ende von Biased Locking https://entwickler.de/online/java/jep-374-das-ende-von-biased-locking-579941430.html https://entwickler.de/online/java/jep-374-das-ende-von-biased-locking-579941430.html#respond Fri, 07 Aug 2020 08:59:00 +0000 https://entwickler.de/?p=579941430 Komplexität und eine immer geringer werdende messbare Verbesserung der Performance: Diese beiden Faktoren haben für die Schaffung von JEP 374 gesorgt. Das Proposal sieht vor, Biased Locking mit Java 15 zu standardmäßig zu deaktivieren und schließlich in einem späteren Release komplett auszubauen.

Der Beitrag JEP 374: Das Ende von Biased Locking ist auf entwickler.de erschienen.

]]>
Komplexität und eine immer geringer werdende messbare Verbesserung der Performance: Diese beiden Faktoren haben für die Schaffung von JEP 374 gesorgt. Das Proposal sieht vor, Biased Locking mit Java 15 zu standardmäßig zu deaktivieren und schließlich in einem späteren Release komplett auszubauen.

Nutzer der HotSpot VM werden sich mit dem Begriff des Biased Locking bereits einmal auseinandergesetzt haben. Via Biased Locking soll das Ausführen einer vergleichenden und austauschenden atomaren Operation beim Erlangen eines Monitors verhindern. Dies geschieht dadurch, dass angenommen wird, dass ein Monitor im Besitz eines Threads bleibt, bis ein anderer Thread versucht den Monitor zu erhalten. Der Monitor bleibt somit einem bestimmten Thread zugeordnet („biased“) – dies sorgte in der Vergangenheit für Performance-Verbesserungen.

Nicht mehr alles Gold, was glänzt

Und genau da kommen wir zum Knackpunkt von JEP 374: Die oben genannten Verbesserungen in Sachen Performance sind heute, gerade mit dem Aufkommen moderner Prozessorarchitekturen, nicht mehr so signifikant wie noch vor einigen Jahren. Damit ist gemeint, dass atomare Operationen heute sehr viel weniger ins Gewicht schlagen, als dies in der Vergangenheit der Fall war. Hinzu kommt, dass neuere Anwendungen ohnehin auf andere Technologien setzen.

Ein weiterer Faktor, der für das Ende von Biased Locking spricht, ist die Komplexität: Manchem Entwickler fällt es mitunter schwer, den Code des Ganzen zu durchblicken. Kein Wunder also, dass auch Änderungen im Subsystem für die Synchronisation schwerfallen. Die Lösung, vorgeschlagen von Patricio Chilano Mateo ist radikal: Biased Locking soll im JDK 15 standardmäßig ausgeschaltet sein, außer man nutzt in der Kommandozeile den Befehl -XX:+UseBiasedLocking. Die Funktion soll zudem als deprecated markiert und in einem späteren Release dann endgültig entfernt werden.

Weitere Informationen gibt es wie immer auf der Homepage des OpenJDKs.

Der Beitrag JEP 374: Das Ende von Biased Locking ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/java/jep-374-das-ende-von-biased-locking-579941430.html/feed 0
Women in Tech: „Als Frau in der Tech-Branche zu arbeiten, kann herausfordernd sein, da die Branche auf Männer ausgerichtet ist.“ https://entwickler.de/online/karriere/women-in-tech-akhtar-579941401.html https://entwickler.de/online/karriere/women-in-tech-akhtar-579941401.html#respond Fri, 07 Aug 2020 07:48:09 +0000 https://entwickler.de/?p=579941401 In unserer Artikelserie „Women in Tech“ stellen wir inspirierende Frauen vor, die erfolgreich in der IT-Branche Fuß gefasst haben. Heute im Fokus: Nahid Akhtar, Data Engineer bei McMakler.

Der Beitrag Women in Tech: „Als Frau in der Tech-Branche zu arbeiten, kann herausfordernd sein, da die Branche auf Männer ausgerichtet ist.“ ist auf entwickler.de erschienen.

]]>
In unserer Artikelserie „Women in Tech“ stellen wir inspirierende Frauen vor, die erfolgreich in der IT-Branche Fuß gefasst haben. Heute im Fokus: Nahid Akhtar, Data Engineer bei McMakler.

Die Tech-Industrie wird von Männern dominiert – so weit, so schlecht. Doch langsam, aber sicher bekommt der sogenannte Boys Club Gesellschaft von begabten Frauen: Immer mehr Frauen fassen in der Branche Fuß.

Aus diesem Grund wollen wir hier spannenden und inspirierenden Frauen die Möglichkeit geben, sich vorzustellen und zu erzählen, wie und weshalb sie den Weg in die Tech-Branche gewählt haben. Aber auch Themen wie Geschlechtervorurteile, Herausforderungen oder Förderungsmöglichkeiten kommen zur Sprache.

Unsere Woman in Tech: Nahid Akhtar, Data Engineer bei McMakler

Meinen ersten Abschluss habe ich im Pakistan Education Center in Doha, Qatar, erlangt. Meinen Bachelorabschluss habe ich von der Fatima Jinnah Women University in Rawalpindi, Pakistan, bekommen. Anschließend arbeitete ich als Dozentin an einer staatlichen Hochschule. 2016 zog ich für mein Masterstudium ins Saarland. Dort machte ich an der Universität des Saarlands meinen Master in Computer and Communication Technology. Während des Studiums war ich bei Infineon Technologies und beim Max-Planck-Forschungsinstitut als Werkstudentin angestellt. Aktuell bin ich Data Engineer bei dem Full-Service Immobiliendienstleister McMakler.

Was hat dein Interesse für die Tech-Branche geweckt?

Als ich jung war, kaufte mein Vater mir einen Computer, weil ich in der fünften Klasse die Klassenbeste war. Während ich die in Geschenkpapier verpackte Kiste betrachtete, fragte ich meinen Vater, was denn in der Box wäre. Seine überraschende Antwort: „Es ist etwas, mit dem du die Welt verändern kannst.“ Von diesem Moment an wusste ich, was meine Passion, was mein Traum sein wird.

Wie verlief dein bisheriger Karriereweg?

Ich habe wirklich hart gearbeitet und aus den Fehlern, die ich auf dem Weg gemacht habe, gelernt. Wer ich sein und wer ich werden wollte, hatte ich stets im Blick. Das ebnete mir den Weg für meinen Erfolg. Das Leben hat mich vor einige Herausforderungen gestellt, um meine Stärken und Fähigkeiten zu prüfen. Aber ich hatte das große Glück, mich da hindurch zu manövrieren und die Position zu erreichen, in der ich mich heute befinde.

Unterstützer und Vorbilder

Meine Mutter. Es war immer meine Mutter. Soweit meine Erinnerung reicht, war sie mein Fels in der Brandung. In einem Dorf in Swat, wo es Mädchen nicht gestattet ist, zur Schule zu gehen, träumte sie davon mich zur Hochschule und Universität zu schicken, so dass ich erreichen konnte, was ihr verwehrt war. Ich hätte nie gedacht, dass sie in der Lage wäre, das für mich zu tun – so stark zu sein, mich zu unterstützen. Aber sie schaffte es. Sie spornte mich an, die Sphären zu erreichen, von denen ich in meinem kaputten Bett unter offenem Himmel träumte, die niemals endenden dunklen Wolken über mir.

Sie ist mein Mentor, mein Vorbild, mein Ritter in glänzender Rüstung, die mich stets mit einem liebevollen Lächeln und einem Anflug von Stolz ansieht – mit dem Wissen, dass ich das erste Mädchen in meinem Dorf war, das feste Grenzen durchbrach und für seine Bildung ins Ausland ging.

Hindernisse

Ja, mit jedem Schritt kam auch eine Hürde. Von meinen Onkeln, die sich gegen meinen Vater stellten, weil er mich zur Schule schickte, über die Stammesältesten, die glaubten, dass es ein sinnloses Unterfangen sei ein Mädchen zur Hochschule zu schicken, bis hin zu den Terroristen in Swat, die auch die Nobelpreisgewinnerin Malala Yousafzai stoppten.

[…] mit jedem Schritt kam auch eine Hürde.

Ich war mit vielen Hindernissen auf meinem Bildungsweg konfrontiert. Aber nach jedem Sturz stand ich mit dem Glauben wieder auf, dass diese Barrieren errichtet wurden, um mich stärker zu machen und mich davon zu überzeugen, meine Träume zu verwirklichen und um es erst recht denjenigen Personen zu zeigen, die glaubten, mich in meiner Entwicklung stoppen zu können.

Wie sieht dein Arbeitsalltag aus?

Meine jetzige Position ist Data Engineer bei McMakler. Mein Arbeitsalltag beinhaltet das Entwickeln und Testen von APIs mittels Flask, Coden in Python, Aufgaben in Airflow terminieren und der Aufbau und das Aufrechterhalten von Datenströmen. Des Weiteren bin ich verantwortlich für das Extrahieren, das Transformieren und das Laden von Daten aus einer großen Bandbreite von Datenquellen. Zudem arbeite ich mit vielen Cloud-Services.

Eigene Projekte

Wegen des technologischen Fortschritts werden Social Bots als die zukünftigen Kommunikationskanäle im Kunderservice betrachtet. Aus diesem Grund entwickelte ich zwei Social Bots, sowohl text- als auch sprachbasiert. für meine Masterthesis bei Infineon Technologies. Die Arbeit beinhaltete das Umwandeln von Themen in Frage-Antwort-Paare, das Erstellen eines Annotationsschemas für diese Frage-Antwort-Paare, das Trainieren eben jeder und eine abschließende Leistungsanalyse der Bots. Ich pitchte die Idee bei einem Hackathon in Infineon Technologies und gewann damit den ersten Preis.

Warum gibt es nicht mehr Frauen im Tech-Bereich?

Sie werden konstant in Frage gestellt und mit den Fähigkeiten ihrer männlichen Kollegen verglichen, […]

Im Gegensatz zu Männern stehen Frauen aufgrund ihrer technischen Tätigkeiten vor vielen sozialen und emotionalen Herausforderungen. Sie werden konstant in Frage gestellt und mit den Fähigkeiten ihrer männlichen Kollegen verglichen, anstatt sie für ihre einzigartigen Fähigkeiten zu schätzen, die sie mitbringen. (Zur Generalisierung: Wissenschaftliche Studien haben belegt, dass Frauen üblicherweise besser im Multitasking und Improvisieren sind, während Männer besser analysieren – alles gleichwertig wertvolle Fähigkeiten in der Branche.)

Abgesehen davon sind Frauen mit konservativerem Hintergrund verschiedenen gesellschaftlichen Belastungen ausgesetzt. Von der Schwangerschaft bis zur familiären Verantwortung sind diese Herausforderungen auch in den modernsten Gesellschaften verankert. Ein weiterer Faktor, unabhängig ob wir ihn anerkennen oder nicht, sind die Kosten für den Mutterschutz, die den Unternehmen entstehen und die sie unbewusst davon abhalten, Frauen einzustellen. Professionelle Arbeitseinstellungen stimmen manchmal nicht mit den sozialkulturellen Normen mehrheitlich konservativer Gesellschaften überein.

Welche Vorteile hätte es, wenn es mehr Frauen in der Tech-Branche gäbe?

Wenn es für die unterschiedlichsten Kulturen funktioniert, warum nicht auch für unterschiedliche Geschlechter?

Für zahlreiche Technologieunternehmen ist es üblich, Büros und/oder Produktionsstudios in zahlreichen Gegenden der Welt zu eröffnen, selbst wenn es keinen nennenswerten Kostenvorteil bringt. In den meisten Fällen ziehen diese internationalen Standorte höhere Kosten wegen des zusätzlichen Personals und Kommunikationsaufwands mit sich.

Der wahre Grund für diese Globalisierung liegt darin, dass Menschen, je nach Herkunft, ganz unterschiedlich Probleme angehen und auf ihre Art lösen. Sie öffnen damit die Tore für Innovation und Fortschritt auf unvorstellbare Weise. Ich glaube, die Frage, die wir hier stellen müssen, lautet, warum wir dieselbe Logik nicht auch bei den Geschlechtern anwenden? Wenn es für die unterschiedlichsten Kulturen funktioniert, warum nicht auch für unterschiedliche Geschlechter?

Die Diskussion über Diversität nimmt Fahrt auf. Wie lange wird es dauern, bis wir Ergebnisse der aktuellen Debatte sehen?

Die Debatte um Diversität wird wahrscheinlich nie vorüber sein. Der Kampf der Geschlechter, beziehungsweise würde ich es als die Kraft der geschlechtsspezifischem Diversität und ihrer Effekte bezeichnen, wird immer debattiert werden, auch wenn wir an einen Punkt gelangen, an dem das Maß der Diversität zunimmt und kulturelle Barrieren eine weniger wichtige Rolle spielen. Davon abgesehen kann es Gutes mit sich bringen, da sie die einzigartigen Fähigkeiten der Geschlechter hervorhebt und uns Zentimeter um Zentimeter näher zur optimalen Balance bringt.

Tipps & Tricks

Als Frau in der Tech-Branche zu arbeiten kann herausfordernd sein, da die Branche auf Männer ausgerichtet ist. Allerdings bestehen die meisten dieser Herausforderungen darin, sich richtig anzupassen und das Mindset zu ändern. Durchhaltevermögen und das Verlangen es zu schaffen, sind wichtige Faktoren, um die Chancen zum eigenen Vorteil auszubalancieren.

Der Beitrag Women in Tech: „Als Frau in der Tech-Branche zu arbeiten, kann herausfordernd sein, da die Branche auf Männer ausgerichtet ist.“ ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/karriere/women-in-tech-akhtar-579941401.html/feed 0
Notizbuch für Entwickler: Jupyter Notebooks für Lehre und Entwicklung https://kiosk.entwickler.de/windows-developer-magazin/windows-developer-magazin-8-2020/notizbuch-fuer-entwickler/ https://kiosk.entwickler.de/windows-developer-magazin/windows-developer-magazin-8-2020/notizbuch-fuer-entwickler/#respond Thu, 06 Aug 2020 12:34:19 +0000 https://entwickler.de/?p=579941315 Mit dem Jupyter-Projekt steht seit längerer Zeit ein Lehr- und Entwicklungssystem zur Verfügung, das die Veranschaulichung und schnelle Evaluation von Algorithmen ermöglicht und längst nicht mehr auf Python beschränkt ist. Dieser Artikel zeigt in einer kurzen Schritt-für-Schritt-Einführung, was sich hinter dem System verbirgt.

Der Beitrag Notizbuch für Entwickler: Jupyter Notebooks für Lehre und Entwicklung ist auf entwickler.de erschienen.

]]>
Mit dem Jupyter-Projekt steht seit längerer Zeit ein Lehr- und Entwicklungssystem zur Verfügung, das die Veranschaulichung und schnelle Evaluation von Algorithmen ermöglicht und längst nicht mehr auf Python beschränkt ist. Dieser Artikel zeigt in einer kurzen Schritt-für-Schritt-Einführung, was sich hinter dem System verbirgt.

Der Beitrag Notizbuch für Entwickler: Jupyter Notebooks für Lehre und Entwicklung ist auf entwickler.de erschienen.

]]>
https://kiosk.entwickler.de/windows-developer-magazin/windows-developer-magazin-8-2020/notizbuch-fuer-entwickler/feed 0
JEP 373: Überarbeitung des DatagramSocket APIs https://entwickler.de/online/java/jep-373-datagramsocket-api-579941312.html https://entwickler.de/online/java/jep-373-datagramsocket-api-579941312.html#respond Thu, 06 Aug 2020 08:42:49 +0000 https://entwickler.de/?p=579941312 "Ohne Fleiß kein Preis" hieß es für Java 15 bei den Java-Entwicklern: Die Überarbeitung des DatagramSocket APIs wurde folgerichtig in den Stand eines offiziellen JEPs erhoben: JEP 373. In diesem wird vorgeschlagen, das API im Hinblick auf Aktualität und Wartbarkeit auf Vordermann zu bringen – ohne dabei die Rückwärtskompatibilität aus den Augen zu verlieren...

Der Beitrag JEP 373: Überarbeitung des DatagramSocket APIs ist auf entwickler.de erschienen.

]]>
"Ohne Fleiß kein Preis" hieß es für Java 15 bei den Java-Entwicklern: Die Überarbeitung des DatagramSocket APIs wurde folgerichtig in den Stand eines offiziellen JEPs erhoben: JEP 373. In diesem wird vorgeschlagen, das API im Hinblick auf Aktualität und Wartbarkeit auf Vordermann zu bringen – ohne dabei die Rückwärtskompatibilität aus den Augen zu verlieren...

Via JEP 353 wurde bereits damit begonnen, veraltete Java-Schnittstellen zu überarbeiten und neu zu implementieren. Während es allerdings in JEP 353 um das Socket API ging (java.net.Socket und java.net.ServerSocket), soll Project Loom unternommen.

DatagramSocket API: Aus alt mach neu

Ein großes Problem – wie dies auch bereits bei JEP 353 der Fall war – stellt die Tatsache dar, dass die Implementierungen der APIs java.net.DatagramSocket und java.net.MulticastSocket bereits seit JDK 1.0 Teil von Java und eine Mixtur aus veraltetem Java- und C-Code sind. Laut JEP 373 ist besonders die Implementierung des MulticastSocket problematisch, da es aus einer Zeit vor IPv6 stammt. Davon abgesehen gibt es auch in Sachen Nebenläufigkeit etliche Stellschrauben, an denen gedreht werden muss, was eine Überarbeitung und Neu-Implementierung nötig macht.

Anders als bei JEP 353 wird allerdings nicht in Betracht gezogen, einfach einen Ersatz für DatagramSocketImpl bereitzustellen. Stattdessen soll DatagramSocket intern eine neue Instanz seiner selbst wrappen und sämtliche Aufrufe direkt an diese delegieren. Die so gewrappte Instanz ist entweder die neue Implementierung (ein Socket-Adapter der aus einem NIO-basierten DatagramChannel::socket erstellt wurde) oder ein Klon der veralteten DatagramSocket-Klasse, die dann an die veraltete Implementierung DatagramSocketImpl delegiert. Wie genau das funktionieren soll, zeigt das folgende Diagramm.

DatagramSocket

Quelle: Oracle

Man sich in Bezug auf den DatagramSocket entschieden, nicht gleich Nägel mit Köpfen zu machen: Im JEP 373 heißt es zwar, dass die veralteten Implementierungen wohl in einem der kommenden Releases als deprecated markiert und schließlich in mittelfristiger Zukunft entfernt werden sollen, aber vorerst gibt es sowohl die neue (NIO-basierte) und die herkömmliche Implementierung. Standardmäßig soll aber die neue Implementierung aktiviert sein.

Weitere Informationen und Details zu JEP 373 gibt es in der umfangreichen Beschreibung des Vorschlags auf der OpenJDK-Homepage.

Der Beitrag JEP 373: Überarbeitung des DatagramSocket APIs ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/java/jep-373-datagramsocket-api-579941312.html/feed 0
Schicksalsfrage: Muss es immer Java sein? https://entwickler.de/online/java/schicksalsfrage-muss-es-immer-java-sein-579941308.html https://entwickler.de/online/java/schicksalsfrage-muss-es-immer-java-sein-579941308.html#respond Thu, 06 Aug 2020 08:18:14 +0000 https://entwickler.de/?p=579941308 Als Programmierer versuchen wir Software zu schreiben, um unsere spezifischen Probleme zu lösen. Wo einst maschinennahe Programmiersprachen wie C++ dominierten, erhoben sich Java und dessen Sprachdesign zu einer echten Alternative. Mit der Zeit haben sich jedoch Umwelt und Erfahrung verändert. Neue Sprachen, wie z. B. Kotlin, haben sich dank Google und JetBrains in der breiten Masse etabliert. Doch vor welchen Problemen steht Java heute und wie kann Kotlin überzeugen?

Der Beitrag Schicksalsfrage: Muss es immer Java sein? ist auf entwickler.de erschienen.

]]>
Als Programmierer versuchen wir Software zu schreiben, um unsere spezifischen Probleme zu lösen. Wo einst maschinennahe Programmiersprachen wie C++ dominierten, erhoben sich Java und dessen Sprachdesign zu einer echten Alternative. Mit der Zeit haben sich jedoch Umwelt und Erfahrung verändert. Neue Sprachen, wie z. B. Kotlin, haben sich dank Google und JetBrains in der breiten Masse etabliert. Doch vor welchen Problemen steht Java heute und wie kann Kotlin überzeugen?

Java und seine Stärken

Eigentlich sollten sich Programmierer darauf konzentrieren, Businesslogik umzusetzen. Dazu sollten sie sich weniger mit technischen Herausforderungen der jeweiligen Programmiersprache auseinandersetzen müssen. Maschinennahe Sprachen sind für Geschäftsanwendungen deshalb meistens eher hinderlich, da sie eine gewisse Komplexität mitbringen. Auch deshalb erlebte Java Anfang dieses Jahrtausends einen regelrechten Hype. Verbessertes Pointer Handling, Standardisierungen in Verbindung mit dem Web, die Plattformunabhängigkeit und eine vollständige Rückwärtskompatibilität und damit verbundene Investitionssicherheit machten die Sprache unter anderem interessant für Unternehmen.

Durch Javas Verbreitung entstand eine riesige Community. Aus dieser ergab sich in der Folge ein Ökosystem mit einer Vielzahl von nützlichen Bibliotheken und Programmiersprachen rund um die Java Virtual Machine (JVM).

Doch so wie Java Spracheigenheiten von C++ verbessert hat, sind bei der Nutzung von Java selbst über die Jahre neue praktische Erfahrungen entstanden. Grundlegende Designentscheidungen, wie z. B. der „Billion Dollar Mistake“ (die Null-Referenz), die im Nachhinein hätten anders getroffen werden sollen, sind aufgrund der Rückwärtskompatibilität nur schwer wieder rückgängig zu machen. Auch Unternehmensentscheidungen und Hypes wie der Weg zum Cloud-Computing – das Auslagern von Infrastruktur an externe Anbieter, das Auftrennen von Software in kleine Dienste (Microservices) oder der Wegfall von klassischen Desktopapplikationen hin zu Single Page Applications (Applikationen, die vollständig im Browser laufen) beeinflussen die Technologiestacks heutzutage stark. Dazu kommen Konzepte und Methoden der Softwareentwicklung selbst, wie das Domain-driven Design, die Verwendung von bestimmten Entwurfsmustern oder der immer weiter ansteigende Anteil funktionaler Konzepte im Sprachdesign. Programmiersprachen unterliegen deshalb gewissen Anforderungen von Entwickler- und Unternehmensseite.

Dynamik in der Umgebung

Die Trends von damals haben sich im Gegensatz zu denen von heute verändert. Das Web, Microservices, Single Page Applications und Mobile-Applikationen sind der Quasistandard geworden und neue Problemfelder wurden aufgerissen. Applikationen sind heute häufig verteilte Systeme, die unterschiedliche Programmiersprachen verwenden. Eine gemeinsame Verwendung von Code zwischen den Codebasen ist damit oft kaum möglich. Mit dem Wachsen des Webs ist z. B. die Sprache JavaScript bis dato unumgänglich – ein Problem, wenn nicht die gesamte Landschaft aus JavaScript bestehen soll. Validierungslogik und Schemata der Daten werden deshalb häufig – bewusst oder unterbewusst – in verschiedenen Sprachen doppelt implementiert. Wird beispielsweise eine Single Page Application entwickelt, die ein Feld auf eine bestimmte Regular Expression prüft, muss diese Logik im Client in der Sprache JavaScript implementiert werden, um dem Benutzer frühes Feedback geben zu können. Da eine Grundregel „never trust the client“ lautet, muss die gleiche Logik aber nochmal auf dem Server implementiert werden. Ändern sich die Validierungsregeln, müssen beide Systeme angepasst werden.

Eine Lösung speziell für das Web schien das „Google Web Toolkit“ (GWT) zu sein. Mit dem GWT war es erstmals möglich, Single Page Applications in der Programmiersprache Java statt JavaScript zu schreiben. Ein tieferes Verständnis von JavaScript war für die Hauptentwicklung zunächst nicht nötig. Code konnte zwischen Client und Server geteilt werden. Das Framework brachte jedoch eigene Probleme mit sich, und die Entwicklung des Frameworks steht heute im Prinzip still.

Zu einer Single Page Application gehört in den meisten Anwendungen auch ein Backend, das auf einem Server gehostet werden muss. Immer weniger Unternehmen wollen jedoch eine eigene Infrastruktur pflegen und kaufen sich damit in Dienste und Infrastruktur der Cloud-Anbieter ein. Diese wird häufig nach in Anspruch genutzter Rechenzeit bezahlt. Die proprietären Dienste kommen aber selbst mit Einschränkungen.

Applikationen, die die Logik der Dienste abbilden, müssen bei Bedarf hoch- und wieder herunterskaliert werden können, sodass das Initialisieren der Laufzeitumgebung möglichst wenig Zeit in Anspruch nehmen sollte, um Kosten für die genutzte Zeit zu sparen. Skriptsprachen, wie beispielsweise JavaScript, oder kompilierte Sprachen können hier durch ihre Laufzeitumgebung punkten. Während Java auf einer vergleichsweise langsamen JVM ausgeführt werden muss, kann Kotlin nach JavaScript oder sogar nativ kompiliert werden und so Ausführzeit sparen.

Es lässt sich erkennen, dass mittlerweile in einer Sprache neben ihrer Ausdrückbarkeit und Performance deshalb vor allem die Flexibilität der Umgebung interessant ist.

Für Java wurden für moderne Probleme oft Lösungen in Form von Frameworks und Technologien gefunden. Die Plattformunabhängigkeit ergab sich dadurch, dass die JVM auf allen Plattformen verfügbar war. Was aber, wenn das nicht der Fall ist, wie z. B. im Browser? Bestimmte Probleme wurden dann mit Frameworks angegangen, andere gar auf einer viel tieferen Ebene – der Runtime-Ebene – wie die heutige Entwicklung von GraalVM zeigt.

Im Gegensatz zu Java geht die Programmiersprache Kotlin einen anderen Weg. Die Sprache Kotlin ist selbst die Schnittstelle zwischen den Plattformen. Sie ist nicht nur für den ausschließlichen Einsatz auf der JVM bestimmt. Bei Kotlin stehen dem Entwickler mehrere Kompilierziele zur Verfügung – neben der JVM sind das native Mobile-Umgebungen oder auch JavaScript. Natürlich darf man dabei nicht vergessen, dass sich viele dieser Kompilierziele noch im Betastadium befinden. Doch dadurch, dass die Sprache so flexibel in ihrer Ausführung ist, kann sie hervorragend genutzt werden, um Kernlogik zu implementieren. Der Code kann dann, sofern er nicht auf spezifische Features der Umgebung zugreift, geteilt genutzt werden. In der Regel ist es allerdings nicht nötig, solche bei der Implementierung von Businesslogik und Validierung zu verwenden.

Developer Experience und Domain-driven Design

Die Flexibilität einer Sprache für das Unternehmen ist eine Sache, der praktische Umgang damit, die Developer Experience, eine ganz andere. Um wartbaren Code zu schreiben, ist es uns als Softwareentwickler natürlich wichtig, die Logik möglichst kurz und präzise zu implementieren. Dabei sollten wir dafür sorgen, dass die Validität verschiedener Objekte jederzeit gewährleistet ist, um unser Programm frei von Bugs zu halten. Ein Grund, warum das Umsetzen von Domain-driven Design im Code so gut funktioniert ist, dass das Umsetzen von Domänenlogik in Werteobjekten und Entitäten führt dazu, dass das Typsystem logische und fachliche Fehler schon zur Compile-Zeit abfängt, wenn wir z. B. versuchen, ein Alter auf einen Geldbetrag zu addieren.

Für solche Fälle abstrahieren wir Entwickler häufig in sogenannte Werteobjekte [1], also Objekte, die Werte und verbundene Invarianten der Modellierung enthalten. Damit wir diese Werte sicher zwischen den Objekten hin- und herreichen können, sollten diese in der Regel unveränderbar sein und sich über ihre Werte statt über ihre Identität identifizieren. In Java erreichen wir das, indem wir equals und hashCode sowie toString implementieren. Dazu können wir die Felder theoretisch final deklarieren. In der Praxis ist das aber in Verbindung mit den diversen Frameworks der Sprache nur schwer möglich. Der erste Schritt ist dann meistens, diese Funktionalitäten in eine generische Basisklasse auszulagern. Nicht selten folgen wilde Vererbungshierarchien.

Und hier helfen auch schon die Kotlin Data Classes, die sich auf das Konzept von unveränderlichen Werteobjekten auf Sprachebene abbilden lassen. Sie implementieren die zuvor erwähnten Methoden – und zwar vollautomatisch. Dabei ist besonders angenehm, dass Klassen in Kotlin standardmäßig final sind. Lange Vererbungshierarchien werden damit vermieden.

Doch mit Wertobjekten allein ist es nicht getan. Denn auch wenn die Fachlichkeiten gut modelliert wurden, können sie immer noch falsche Typen haben. Namentlich den Null-Typ. In Java ist die Existenz eines Werts immer optional. Zwar kann die Existenz von Pflichtfeldern hier durch Laufzeitvalidierung und eine hohe Testabdeckung größtenteils sichergestellt werden, eine Garantie ist das aber nicht – vor allem nicht in Teams, die sich aus Mitgliedern mit verschiedenen Erfahrungsspektren zusammensetzen.

In Listing 1 wird die beispielhafte Modellierung einer Person gezeigt. Diese besitzt einen Namen, der wiederum einen Vornamen enthalten kann.

class Person {
  // ...
  public String getName() {
    if (this.getName() != null) {
      return this.getName().getFirstname();
    }
    return null;
  }
};

Dabei ist der Typ der Methode aus der Signatur kaum zu erkennen. Die Signatur gibt zwar an, einen String wiederzugeben, dass dieser Null sein kann, sieht der Entwickler ohne Implementierung aber nicht. Abhilfe kam hier mit Java 8, als vermehrt funktionale Programmierkonstrukte in die Sprache fanden, z. B die Optional-Monade. Diese wird häufig zur Markierung von optionalen Typen verwendet. Das Problem ist natürlich, dass auch eine Variable vom Typ Optional null sein kann und das Grundproblem der Sprache damit nicht löst. Das führt dazu, dass in fremden Codebasen schnell defensiv, also mit sehr vielen unnötigen Null-Checks, programmiert wird. Eine steigende Komplexität in der Codebasis ist die Folge.

class Person(val name: Name?){
  fun getName() = name?.firstname 
};

Und genau dieses Problem existiert bei Kotlin nicht. Bei Kotlin wird explizit zwischen vorhandenen Typen und optionalen Typen unterschieden. Der Umgang damit wird außerdem erleichtert und der Code wird simpler. Vergleicht man dazu die Signatur oben mit der aus Listing 1 ist schon in der Signatur bekannt, dass der Name einen optionalen Wert enthält. Und es fällt noch etwas auf: Der Umgang mit optionalen Werten und der Sprache an sich scheint viel einfacher. Nicht nur, dass die Null-Check-Kaskaden, die wir dem Java-Beispiel entnehmen können, durch ein einfaches Fragezeichen ausgetauscht wurden, der Code enthält auch viel weniger Zeilen, in denen Fehler passieren können. Kurz gesagt: Weil bei Java das Abfangen von Typfehlern von der Compile-Zeit in die Laufzeit verlagert wird, ist es anfälliger für Bugs. Eine strikte Testabdeckung ist deshalb Pflicht. Das führt leider zu mehr Aufwand in der Implementierung und damit höheren Kosten der Software.

Fazit

Die Welt steht nicht still und auch Technologien entwickeln sich weiter. Java hat lange Zeit als hervorragende Programmiersprache gedient. Doch wenn sich die Umgebung ändert und die Erfahrungen zunehmen, müssen sich auch die Sprachen adaptieren. Durch kürzere Releasezyklen und eine höhere Bereitschaft, neue Sprachfeatures aufzunehmen, wird zwar auch Java kontinuierlich an heutige Bedürfnisse angepasst, die Entwicklung wird aber durch das Mantra der Abwärtskompatibilität gehemmt.

Es ist klar zu erkennen, dass Kotlin aus den Erfahrungen von Java lernen konnte. Da Kotlin eine relativ junge Sprache ist, ist sie natürlich von Beginn an hervorragend an die heutige Zeit und ihre Probleme angepasst – vor allem im Hinblick auf Developer Experience. Generell ist das aber nur ein Ausschnitt möglicher Faktoren. Code, der geschrieben ist, muss häufig lange Zeit gewartet werden. Und auch wenn Kotlin gerade einen Aufschwung erlebt, ist Java immer noch weiter verbreitet und Entwickler sind leichter zu finden. Während Java sich beim Tiobe-Index wacker auf Platz 2 hält, ist Kotlin noch nicht einmal unter den Top 20 der populären Programmiersprachen zu finden.

Unternehmen brauchen häufig eines: Investitionssicherheit. Kotlin ist modern und es ist angenehm damit zu arbeiten. Java war und wird aber vermutlich, Standardisierungen sei Dank, noch lange Zeit am Markt bleiben. Das sind Erfahrungen, auf die Kotlin aufgrund seines Alters noch nicht zurückgreifen kann. Dass Kotlin aber sowohl vom Hause JetBrains als auch von Google gepusht wird, lässt auf Großes hoffen. Eine Frage bleibt also offen: Muss es immer Java sein?

Der Beitrag Schicksalsfrage: Muss es immer Java sein? ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/java/schicksalsfrage-muss-es-immer-java-sein-579941308.html/feed 0
Push the Button: Neue Features für die zehnte LTS-Version des TYPO3 CMS https://kiosk.entwickler.de/php-magazin/php-magazin-5-2020/push-the-button/ https://kiosk.entwickler.de/php-magazin/php-magazin-5-2020/push-the-button/#respond Wed, 05 Aug 2020 18:04:00 +0000 https://entwickler.de/?p=579941304 Die PHP-basierte Enterprise-Webpublishing-Plattform TYPO3 gehört zu den Open-Source-Content-Management-Projekten der ersten Stunde und ist eines der ersten Systeme, das der Öffentlichkeit unter der GPL frei zur Verfügung gestellt wurde. Die jüngst erschienene zehnte LTS-Version bringt eine Reihe von spannenden neuen Features mit.

Der Beitrag Push the Button: Neue Features für die zehnte LTS-Version des TYPO3 CMS ist auf entwickler.de erschienen.

]]>
Die PHP-basierte Enterprise-Webpublishing-Plattform TYPO3 gehört zu den Open-Source-Content-Management-Projekten der ersten Stunde und ist eines der ersten Systeme, das der Öffentlichkeit unter der GPL frei zur Verfügung gestellt wurde. Die jüngst erschienene zehnte LTS-Version bringt eine Reihe von spannenden neuen Features mit.

Der Beitrag Push the Button: Neue Features für die zehnte LTS-Version des TYPO3 CMS ist auf entwickler.de erschienen.

]]>
https://kiosk.entwickler.de/php-magazin/php-magazin-5-2020/push-the-button/feed 0
Java Magazin 9.20 erschienen: Spring – Frühlingsgefühle in der Java-Welt https://entwickler.de/online/java/java-magazin-9-20-spring-editorial-579941232.html https://entwickler.de/online/java/java-magazin-9-20-spring-editorial-579941232.html#respond Wed, 05 Aug 2020 09:51:28 +0000 https://entwickler.de/?p=579941232 Schon Rilke sagte, dass der Frühling hundert Wunder hat. Ganz so viele Projekte gibt es im Spring-Universum freilich nicht – die offizielle Webseite listet derer lediglich 24 auf. Vom Spring Framework selbst über Spring Boot bis hin zu Spring for Android und den Spring Web Services ist über die letzten knapp achtzehn Jahre ein beeindruckendes Sammelsurium an Tools für das Java-Ökosystem und das Schreiben entsprechender Enterprise-Anwendungen gewachsen.

Der Beitrag Java Magazin 9.20 erschienen: Spring – Frühlingsgefühle in der Java-Welt ist auf entwickler.de erschienen.

]]>
Schon Rilke sagte, dass der Frühling hundert Wunder hat. Ganz so viele Projekte gibt es im Spring-Universum freilich nicht – die offizielle Webseite listet derer lediglich 24 auf. Vom Spring Framework selbst über Spring Boot bis hin zu Spring for Android und den Spring Web Services ist über die letzten knapp achtzehn Jahre ein beeindruckendes Sammelsurium an Tools für das Java-Ökosystem und das Schreiben entsprechender Enterprise-Anwendungen gewachsen.

Im Spring Framework und dessen Modulen wird vor allem „Convention over Configuration“ großgeschrieben, was die Programmiererfahrung für Entwickler von Enterprise-Anwendungen verbessern soll. Weniger Komplexität ist ja eigentlich nicht so das Ding von Mutter Natur, doch wer sich nicht als IT-Äquivalent des großen Biologen Carl von Linné sieht, der freut sich sicher darüber, weniger Einstellungen vornehmen zu müssen. Damit gilt das Spring Framework durchaus als Musterbeispiel für das „Keep it simple, stupid“-(KISS-)Prinzip.

Natürlich würde eine Beleuchtung sämtlicher Sprosse der von Pivotal gehegten und gepflegten Biosphäre den sprichwörtlichen Blumenkasten, den das Java Magazin darstellt, sprengen: Zu viele Triebe, zu viele Wurzeln und – das muss gesagt werden – ein paar abgestorbene Äste (Spring XD, Spring Flex, Spring Scala) gibt es. Der Fokus dieser Ausgabe liegt daher auf dem Spring Framework selbst, der wohl schönsten Blüte Spring Boot und der starken Wurzel Spring Data.

Eine Einführung in das Spring Framework selbst und einen Bericht über die aktuellen Änderungen in diesem Bereich steuert Tassilo Söldner bei. Mark Paluch, Leiter des Spring-Data-Projekts, berichtet in seinem Artikel über den Status quo des Moduls und Michael Simons widmet sich voller Hingabe der aktuellen Version von Spring Boot. Doch im Hinblick auf Spring Boot hat diese Ausgabe noch mehr zu bieten: François Fernandès beleuchtet im ersten Teil seiner Artikelserie die Auto Configuration, und Jonas Hecht zeigt, wie Spring Boot gemeinsam mit der GraalVM genutzt werden kann. Die frühlingshaften Gefühle, die gerade Michael Simons zum Spring-Boot-Projekt hegt, spiegeln sich auch in unserer Infografik wider, denn unser Autor begleitet darin als Comicfigur die Leser durch die nötigen Grundlagen.

Wer sich noch weiter in die Wildnis schlagen möchte, den begleitet Erin Schnabel in diesem Monat gerne auf ein Abenteuer: Unsere Autorin erzählt von ihren Erfahrungen in Dungeons & Dragons und nimmt als Dungeon Master den geneigten Leser mit in den Datenanalysedschungel, wo manch eine Überraschung lauern kann. Ähnlich aufregend geht es auch bei Manfred Steyer zu, der von der Microfrontend-Revolution zu erzählen weiß.

Das aktuelle Java Magazin hat, wie man sieht, die geballte Ladung Natur und Abenteuerlust im Gepäck, sodass keine Zeit für Frühjahrsmüdigkeit bleibt. In diesem Sinne viel Spaß bei der Lektüre und verlaufen Sie sich nicht!

Der Beitrag Java Magazin 9.20 erschienen: Spring – Frühlingsgefühle in der Java-Welt ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/java/java-magazin-9-20-spring-editorial-579941232.html/feed 0
Women in Tech: „Geht zu Meetups und anderen Frauen-Tech-Gruppen und teilt eure Erfahrungen mit den anderen Teilnehmerinnen“ https://entwickler.de/online/karriere/women-in-tech-kanubala-579941222.html https://entwickler.de/online/karriere/women-in-tech-kanubala-579941222.html#respond Wed, 05 Aug 2020 09:50:56 +0000 https://entwickler.de/?p=579941222 In unserer Artikelserie „Women in Tech“ stellen wir inspirierende Frauen vor, die erfolgreich in der IT-Branche Fuß gefasst haben. Heute im Fokus: Deborah Dormah Kanubala, Mitbegründerin der Organisation "Women Promoting Science to the Younger Generation"

Der Beitrag Women in Tech: „Geht zu Meetups und anderen Frauen-Tech-Gruppen und teilt eure Erfahrungen mit den anderen Teilnehmerinnen“ ist auf entwickler.de erschienen.

]]>
In unserer Artikelserie „Women in Tech“ stellen wir inspirierende Frauen vor, die erfolgreich in der IT-Branche Fuß gefasst haben. Heute im Fokus: Deborah Dormah Kanubala, Mitbegründerin der Organisation "Women Promoting Science to the Younger Generation"

Die Tech-Industrie wird von Männern dominiert – so weit, so schlecht. Doch langsam, aber sicher bekommt der sogenannte Boys Club Gesellschaft von begabten Frauen: Immer mehr Frauen fassen in der Branche Fuß.

Aus diesem Grund wollen wir hier spannenden und inspirierenden Frauen die Möglichkeit geben, sich vorzustellen und zu erzählen, wie und weshalb sie den Weg in die Tech-Branche gewählt haben. Aber auch Themen wie Geschlechtervorurteile, Herausforderungen oder Förderungsmöglichkeiten kommen zur Sprache.

Unsere Woman in Tech: Deborah Dormah Kanubala, Mitbegründerin der Organisation „Women Promoting Science to the Younger Generation“

Deborah hat einen Masterabschluss in Mathematik mit einer Spezialisierung in Big Data und Finanzmathematik. Gegenwärtig ist sie im Masterstudiengang African Masters in Machine Intelligence in Ghana immatrikuliert. Ihr Forschungsinteresse gilt den Anwendungen von Machine-Learning-Algorithmen bei der Entwicklung robuster Modelle zur Kreditwürdigkeitsprüfung und Computer Vision.

Deborah ist der festen Überzeugung, dass man besser lernt, wenn man andere unterrichtet. Daher hat sie einen YouTube-Kanal, auf dem sie Machine-Learning-Enthusiasten mehr über dieses Thema beibringt. Frau Kanuala ist eine erfahrene Anwenderin von Python im Bereich Machine Learning. Darüber hinaus ist sie Mitbegründerin einer gemeinnützigen Organisation namens „Women Promoting Science to the Younger Generation“. Sie hat mehrere Auszeichnungen und Stipendien erhalten, darunter das Mastercard Foundation Scholars Grant, das Alumnode-Stipendium aus Deutschland sowie den MIT-Preis und Google-Auszeichnungen während Indaba in Kenia bzw. Indabax in Ghana. Zusätzlich wurde Deborah unter die 20 einflussreichsten Personen in Nordghana, Kategorie STEM, gewählt. Sie wünscht sich eine Zukunft, in der Menschen nach ihren Fähigkeiten und nicht nach ihrem Geschlecht beurteilt werden.

Was hat dein Interesse für die Tech-Branche geweckt?

Mein Interesse an der Tech-Branche entwickelte sich während meines Masterstudiengangs am African Institute for Mathematical Sciences, Senegal. Obwohl ich Technologie oft verwendete, sah ich mich eher als User von Technologie denn als jemand, der selbst zur Entwicklung von Technologie beiträgt. Während meines Masterstudiums erhielt ich Einführungen in Python-Programmierung und in Java. Zu dieser Zeit begann ich, mich mehr mit Technologie zu beschäftigen und entwickelte ein Interesse an ihr. Was mich daran fasziniert, ist die Tatsache, dass man, wenn man einmal in der Lage ist, sich ein komplexes Problem auszudenken, es in ein paar wenigen Codezeilen niederschreiben kann, und das erschafft die Magie. 🙂 Meinen Code laufen zu lassen, ist das, was mir daran so viel Befriedigung verschafft. 🙂

Wie verlief dein bisheriger Karriereweg?

Ich stamme aus dem nördlichen Teil Ghanas. Das ist eine der Regionen, die in Bezug auf Bildung im Allgemeinen und Informatik im Besonderen hinter dem Rest des Landes und der Welt zurückliegt. Diese Situation behindert die Entwicklung auf diesem Gebiet und grenzt ein Areal weiter aus, das bereits arm und unterentwickelt ist.

Vor allem Frauen bleiben am unteren Ende der Bildungsleiter stets isoliert. In den Fällen, in denen Frauen die Möglichkeit zu Bildung erhalten, werden sie oft ermutigt, an Nicht-MINT-Programmen teilzunehmen. Aus irgendeinem Grund scheint es einen Mythos zu geben, dass Mathematik und Physik der richtige Karriereweg für Männer sei. Ich glaube, diese Situation ist nicht nur dort vorherrschend, woher ich komme, sondern auch in anderen Teilen Afrikas und der Welt im Allgemeinen. Lange Zeit fiel ich, wie die meisten anderen Frauen, dieser fehlerhaften Denkweise zum Opfer, bis ich einen Kurs in Algebra an der Junior High School belegte. Die Konzepte der Mathematik wurden mir klarer, und dieser weit verbreitete Mythos wurde für mich gebrochen.

Meine Reise in MINT wird daher weitgehend von meinem Hintergrund und meiner allgemeinen Entschlossenheit beeinflusst, nicht nur meine persönliche berufliche Entwicklung zu einer einflussreichen Fachkraft auf diesem Gebiet zu erreichen, sondern auch eine Dynamik an der Basis im MINT-Bereich zu erzeugen, die letztlich zur umfassenden Entwicklung meines Wohnorts und Afrikas im Allgemeinen führt. Die Entwicklung von Mädchen und Frauen liegt mir besonders am Herzen, da ich glaube, dass ihre Entwicklung zu einer ganzheitlichen Entwicklung der Gesellschaft und der Menschheit führen wird.

Unterstützer und Vorbilder

Ich hatte eine Menge Unterstützung und erhalte sie noch immer. Während meines Masterstudiums bei AIMS Senegal war ich irgendwann kurz davor, aufzugeben, aber meine Mutter hat mich sehr ermutigt. Ich schreibe es ihr zu, dass ich meinen ersten Masterabschluss machen konnte und ich sehe sie als mein Vorbild an. Meine Mutter ist eine starke, zielstrebige und resiliente Frau. Ihre starke Leidenschaft und ihr Tatendrang, zu sehen, wie ihre Kinder es im Leben schaffen, sind es, wonach sie sich sehnt. Sie ist der Inbegriff von Fürsorge und Liebe und ich schaue zu ihr auf.

Ein Tag aus Deborahs Leben

Da ich derzeit einen zweiten Masterabschluss in Machine Intelligence anstrebe, verbringe ich 6 bis 8 Stunden damit, Vorlesungen zu belegen und Laborübungen und Tutorien zu absolvieren. Da ich mich für Machine Learning im Finanzwesen interessiere, verbringe ich viel Zeit mit der Lektüre von Arbeiten auf diesem Gebiet.

Derzeit lese ich eine Abhandlung über „A study of prediction loan default based on the random forest algorithm“ von Lin Zhu et al. Außerdem habe ich einen Youtube-Kanal über Machine Learning, der noch sehr neu ist, sodass ich einiges an Zeit damit verbringe, die Inhalte dafür zu strukturieren. Abgesehen davon beschäftige ich mich auch bei anderen Treffen mit meinen Mitbegründern mit möglichen Projekten, an denen sich die von mir mitbegründete Vereinigung (Women Promoting Science to the Younger Generation) beteiligen könnte.

Worauf bist du besonders stolz in deiner Karriere?

Ich fühle mich erfüllt, wenn sich meine Arbeit positiv auf das Leben anderer auswirkt. Daher stehen die meisten Dinge, auf die ich in meiner Karriere am stolzesten bin, in Beziehung zu Dingen, die das Leben anderer positiv beeinflusst haben. Insbesondere, dass ich Mitbegründerin von Women Promoting Science to the Younger Generation bin.

Ich fühle mich erfüllt, wenn sich meine Arbeit positiv auf das Leben anderer auswirkt

Dies ist eine Vereinigung, die versucht, das Interesse der jüngeren Generation an Mathematik und Wissenschaft zu wecken. Durch diese Vereinigung haben wir erfolgreich Hilfsprogramme organisiert, die sich an Schülerinnen und Schüler der Sekundarstufe richten. Außerdem leitete ich mein Team bei der Gewinnung eines Projektzuschusses zur Organisation einer Konferenz über die Überwindung der Lücke im MINT-Bereich im ländlichen Afrika. Die Konferenz richtete sich an High-School-Schüler in der nördlichen Region Ghanas. Diese Schüler hatten die Gelegenheit, von führenden Wissenschaftlern und Mathematikern der Region betreut zu werden. Diese bisherigen Errungenschaften bereiten mir Freude und ermutigen mich, härter zu arbeiten, da meine Arbeit in der Regel nicht mir, sondern einem breiteren Publikum zugute kommt.

Warum gibt es nicht mehr Frauen im Tech-Bereich?

Im Allgemeinen fühlen sich Frauen eher eingeschüchtert und haben Angst, die Technologiebranche zu dominieren, weil angenommen wird, dass sie kein Feld für Frauen ist. Die wenigen Frauen, die die Grenzen überwinden und diese Positionen ausfüllen, werden in unseren Gemeinschaften manchmal als „harte Frauen“ bezeichnet. Diese Fehleinschätzungen haben dazu geführt, dass einige Frauen, die in der Tech-Branche wirklich großartig hätten abschneiden können, sich lieber für andere Karrieren entschieden haben. Außerdem werden die meisten Technologieunternehmen in der Regel von Männern geführt und es gibt nur sehr wenige Frauen, zu denen man als Vorbilder aufschauen kann.

Hindernisse

Während im Laufe der Jahre große Fortschritte bei der Erreichung der Geschlechterparität in der Gesellschaft erzielt wurden, ist es nach wie vor sehr entmutigend, dass Frauen wie ich heutzutage immer noch die uralte Geschlechterstereotypisierung vergangener Generationen durchmachen müssen, der auch ich mich stellte.

Besonders problematisch ist, dass meine weiblichen Züge und mein weibliches Aussehen immer noch meinem akademischen und beruflichen Fortschritt vorangestellt sind, wenn ich vom anderen Geschlecht gelobt werde. Es ist für mich sehr demoralisierend, dass meine beruflichen Leistungen mit Kommentaren wie „schöne Frau“ und „nettes Aussehen“ usw. versehen werden, anstatt meine intellektuellen Fähigkeiten zu betonen. Dieser Gesichtspunkt überträgt sich überraschenderweise auf die Art und Weise, wie meine berufliche Leistung aufgenommen wird. Es ist meine Hoffnung, dass zu meinen Lebzeiten Wissenschaftlerinnen und Mathematikerinnen für ihren Intellekt und nicht für ihr Aussehen gefeiert werden.

Würde unsere Welt anders aussehen, wenn mehr Frauen in MINT-Fächern arbeiten würden?

[…] ich hoffe, dass Frauen im nächsten Jahrzehnt nicht nach ihrem Geschlecht, sondern nach ihrer Leistungsfähigkeit beurteilt werden.

Grundsätzlich machen Frauen mehr als 50 % der Bevölkerung aus und von den wenigen Frauen, die tatsächlich eine Ausbildung erhalten, geht weniger als ein Viertel dieser Frauen in die Tech-Branche. Das bedeutet, dass ein beträchtlicher Teil der Humanressourcen ungenutzt bleibt. Wenn mehr Frauen im MINT-Bereich arbeiten würden, würde dies also bedeuten, dass mehr Humanressourcen in Anspruch genommen würden. Mehr Frauen in MINT bringen auch eine andere Perspektive mit und erhöhen somit den Fortschritt unserer Volkswirtschaften.

Die Diskussion über Diversität nimmt Fahrt auf. Wie lange wird es dauern, bis wir Ergebnisse der aktuellen Debatte sehen?

Ich bin der Ansicht, dass sich die Dinge allmählich ändern, und ich hoffe, dass Frauen im nächsten Jahrzehnt nicht nach ihrem Geschlecht, sondern nach ihrer Leistungsfähigkeit beurteilt werden.

Tipps & Tricks

Ich glaube, dass ein geteiltes Problem ein halb gelöstes Problem ist.

Um Erfolg zu haben und eine Expertin in etwas zu werden, braucht man ständige und kontinuierliche Praxis. Es gibt ganz sicher keinen Erfolg von heute auf morgen. Es kann mit der Zeit frustrierend werden, besonders wenn ihr noch Anfänger seid und manchmal das Gefühl habt, auf dem falschen Gebiet zu sein. Aber gebt nicht auf! Geht zu Meetups und anderen Frauen-Tech-Gruppen und teilt eure Erfahrungen mit den anderen Teilnehmerinnen. Redet so viel wie möglich mit anderen Frauen in der Tech-Branche. Ich glaube, dass ein geteiltes Problem ein halb gelöstes Problem ist.

Der Beitrag Women in Tech: „Geht zu Meetups und anderen Frauen-Tech-Gruppen und teilt eure Erfahrungen mit den anderen Teilnehmerinnen“ ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/karriere/women-in-tech-kanubala-579941222.html/feed 0
JEP 372: Entfernen der JavaScript-Engine Nashorn https://entwickler.de/online/java/jep-372-javascript-nashorn-graalvm-579941227.html https://entwickler.de/online/java/jep-372-javascript-nashorn-graalvm-579941227.html#respond Wed, 05 Aug 2020 09:34:36 +0000 https://entwickler.de/?p=579941227 Mit JEP 355 wurde die JavaScript-Engine Nashorn zum Abschuss freigegeben, nun soll sie endgültig in die ewigen Jagdgründe eingehen. JEP 372 könnte bereits an Bord von Java 15 sein und den Siegeszug der GraalVM endgültig besiegeln. Wie ist der Status Quo von JavaScript im JDK? Wir haben es uns angesehen...

Der Beitrag JEP 372: Entfernen der JavaScript-Engine Nashorn ist auf entwickler.de erschienen.

]]>
Mit JEP 355 wurde die JavaScript-Engine Nashorn zum Abschuss freigegeben, nun soll sie endgültig in die ewigen Jagdgründe eingehen. JEP 372 könnte bereits an Bord von Java 15 sein und den Siegeszug der GraalVM endgültig besiegeln. Wie ist der Status Quo von JavaScript im JDK? Wir haben es uns angesehen...

Auf der Jagd nach dem heiligen Gra(a)l gab es so manchen Schwund. Ein solcher könnte die JavaScript-Engine Nashorn nun sein, wie JEP 372 – Remove the Nashorn JavaScript Engine von Jim Laskey nun vorschlägt. Bereits 2018 wurde der Grundstein für den Ausbau der Nashorn-Engine, der entsprechenden APIs und der JJS Tools gelegt, in Java 11 wurden sie als deprecated markiert. Damit hatte die ursprünglich in JDK 8 via JEP 174 eingeführte Script-Engine keine besonders lange Halbwertszeit, auch wenn sie damals die eher antiquierte Rhino-Engine ersetzte.

Der Teufel liegt bei der Intention, das Nashorn loszuwerden, natürlich in der Zeit: JavaScript und der ECMA-Standard entwickeln sich rapide weiter und die Engine im JDK auf Stand zu halten ist gelinde gesagt herausfordernd, wie das Nashorn-Team im JEP schreibt. Da sich wohl auch die breitere Community nicht wirklich bewegt hat, um das Nashorn zu pflegen, bleibt nun nur der Schritt nach vorne, also die JavaScript-Engine in den verdienten Ruhestand zu schicken. Keinen Einfluss hat dieses JEP übrigens auf das API javax.script, dieses soll unverändert bleiben.

Entfernt werden allerdings die Module jdk.scripting.nashorn und jdk.scripting.nashorn.shell, wie Jim Laskey schreibt. Ersteres enthält die Packages jdk.nashorn.api.scripting und jdk.nashorn.api.tree, Letzteres die JJS Tools.

GraalVM to the rescue

Überraschend kommt dieser Schritt, wie man sieht, nicht. Seit JDK 11 wurden die Nutzer von Nashorn immer wieder darauf aufmerksam gemacht, dass das Projekt bald aufgegeben werden würde. Stattdessen wurden die User angehalten, sich nach Alternativen umzuschauen, wobei sie dafür nicht lange suchen mussten: Immerhin stellt die GraalVM eine entsprechende Funktionalität in modernem Umfang zur Verfügung. Es wurden sogar bereits Stimmen laut, die vorschlagen, GraalJS als Engine in OpenJDK zu implementieren, etwa von Vincent Privat auf Twitter:

Weitere Informationen zum JEP gibt es auf der Homepage des OpenJDK und natürlich kann auf der Mailing-Liste darüber diskutiert werden. Stand jetzt heißt es in Java 15 wohl „Bye bye, Nashorn“.

Der Beitrag JEP 372: Entfernen der JavaScript-Engine Nashorn ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/java/jep-372-javascript-nashorn-graalvm-579941227.html/feed 0
Progressive Web Apps, Vue.js 3 und Visual Studio Code 1.47 – Unsere Top-Themen im Juli https://entwickler.de/online/javascript/monatsruecklbick-pwa-vue-3-vs-code-579941215.html https://entwickler.de/online/javascript/monatsruecklbick-pwa-vue-3-vs-code-579941215.html#respond Wed, 05 Aug 2020 08:43:10 +0000 https://entwickler.de/?p=579941215 Die Themen unseres Monatsrückblicks sind dieses Mal so spannend, wie vielfältig. Auf besonderes Interesse ist das Video zu Progressive Web Apps gestoßen. Zu unseren Highlights gehören auch das sich anbahnende Major Release von Vue.js 3 und das aktuelle Release von Visual Studio Code.

Der Beitrag Progressive Web Apps, Vue.js 3 und Visual Studio Code 1.47 – Unsere Top-Themen im Juli ist auf entwickler.de erschienen.

]]>
Die Themen unseres Monatsrückblicks sind dieses Mal so spannend, wie vielfältig. Auf besonderes Interesse ist das Video zu Progressive Web Apps gestoßen. Zu unseren Highlights gehören auch das sich anbahnende Major Release von Vue.js 3 und das aktuelle Release von Visual Studio Code.

Vor allem Adam Biens Session von der IJS über PWAs ohne Framework hat unsere Besucher aus dem letzten Monat gefesselt. Gleich dahinter rangieren unsere News über den Release Candidate von Vue.js 3 und das Release von VS Code 1.47. Aber auch unsere DevOps Story und die Unterschiede in der Datensortierung zogen viele Leser an. Darüber hinaus gab es Neuigkeiten im Bereich ECMAScipt 2021 und ActiveJ. Für alle, denen das noch nicht genügt, haben wir noch eine spannende Session über stark typisiertes PHP und ein Interview mit jeder Menge hilfreicher Tipps aus dem Bereich GraphQL und Microservices.

10. GraphQL und Microservices kombinieren: Tipps von Oliver Sturm im Interview

Wir beginnen unser Ranking mit dem Video-Interview mit Oliver Sturm über Tech-Trends. Von diesen gibt es viele, aber wann lohnt sich der Blick darauf? Oliver Sturm hat ein paar Tipps für den Einstieg in die Arbeit mit GraphQL und Microservices für euch.

9. ActiveJ: Neue Plattform für Java-Entwickler vorgestellt

In ActiveJ haben wir unseren 9. Platz gefunden. Es wurde als eine neue Plattform zur Entwicklung von Java-Projekten vorgestellt. Mit ihr soll Entwicklern alles zur Verfügung gestellt werden, was zur Erstellung von asynchronen Webanwendungen benötigt wird.

8. Stark typisiertes PHP: neue Möglichkeiten in PHP 7.4

Auf Rang 8 folgt Damein Seguys Session von der IPC: Die neu in PHP eingeführten Optionen für eine starke Typisierung widersprechen dem ursprünglichen Gedanken hinter der Sprache. Dennoch kann sich ein Blick darauf lohnen, wie Damien Seguy in diesem Talk von der International PHP Conference demonstriert.

7. mdjs: Interaktive Demos mit Markdown und Javascript schreiben

Auf PLatz 7 erhalten wir einen Einblick in mdjs: Ausführbares JavaScript in Markdown integrieren: Das macht mdjs möglich! Entwickler Thomas Allmer gibt einen praktischen Einblick darin, was das ermöglicht und wie es funktioniert.

6. ECMAScript 2021: Vier weitere Features stehen fest

Einen Position in der Mitte erhält ECMASctip 2021: Vier weitere Proposals für ECMAScript 2021 sind fertig. Im Juli-Meeting des TC39 wurde wieder darüber abgestimmt, welche Features bereit für die Aufnahme in den Standard sind. Wie erwartet, gehört Promise.any zu den Features für 2021, aber das ist noch nicht alles.

5. Datensortierung: Avalanchesort besser als Quicksort?

Interessenten an Datensortierung kommen mit unserem 5. Rang auf ihre Kosten: Wer Daten sortieren möchte, greift in den meisten Fällen wohl auf Algorithmen wie Quicksort oder Mergesort zurück. Mit Avalanchesort gibt es nun darüberhinaus eine rekursive Variante, Entwickler Dr. Dieter Porth stellt den neuen Ansatz vor.

4. DevOps Stories: Ich komme hier zu nichts! Was Unterbrechungen für Entwickler bedeuten

Mit einem Gefühl, dass sicher viele Developer kennen, nämlich Ärger über Unterbrechungen, landen die DevOps Stories auf Platz 4: Alle Mitglieder des MusicStore-Teams sitzen an ihren Computern und haben Kopfhörer auf den Ohren. Außer dem Klappern der Tastaturen sind keine Geräusche im Raum zu hören. Auf einmal kommt Erik, der Product Owner, zur Tür herein und spricht die Kollegen an.

3. Visual Studio Code 1.47: Neuer JavaScript Debugger, Support für Windows on ARM und verbesserter Settings Editor

Unser Siegertreppchen beginnt diesen Monat mit VS Code: Die neueste Version von Visual Studio Code kommt mit einem neuen JavaScript Debugger, Support für Windows on ARM sowie einem neuen Update der HexEditor-Erweiterung. Darüber hinaus gab es auch dieses Mal wieder Verbesserungen auf Seiten der Accessibility.

2. Vue.js 3: Release Candidate veröffentlicht

Auf dem Silberrang steht das näher rückende Major Release Vue.js 3: Ein Release Candidate steht nun bereit! Das bedeutete, dass das API und die Implementierung des Cores von Vue 3 jetzt stabil sind. Größere Neuerungen sind vor der finalen Veröffentlichung nicht mehr geplant. Somit steht das Featureset nun endlich fest! Manches bleibt aber vermutlich erst einmal experimentell.

1. Progressive Web Apps ohne Framework: Geht das?

Die Goldmedaille der Monatsrückblicke geht dieses Mal an Adam Biens Session über PWAs: Frameworks sind aus der Web-Entwicklung nicht mehr wegzudenken. Sie vereinfachen vieles, können aber auch einen gewissen Overhead mitbringen. Adam Bien zeigt in diesem Talk von der International JavaScript Conference, dass es auch anders Geht: Progressive Web Apps ohne Framework!

Der Beitrag Progressive Web Apps, Vue.js 3 und Visual Studio Code 1.47 – Unsere Top-Themen im Juli ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/javascript/monatsruecklbick-pwa-vue-3-vs-code-579941215.html/feed 0