RPG character generators with Turbo Pascal, Delphi and Visual Basic. D&D, Pentium 100 and Atari 500 ST, the joy of programming, the object oriented paradigm with Java 1.5 at university, warehouse software with JBoss 5 and enterprise Java, the first line of Java code was "public static void main", Java is not the ideal language to start programming with, building Swing apps at the University of Brno, studying computer science was hard, computer theory at the university is actually useful, design pattern overuse is an enterprise Java disease, some best practices move to Java EE platform - there is not need to solve the already solved problems, internship in Brazil with PHP and JQuery in 2009, the main problem of early Java EE was slow deployments, starting at RedHat as quality engineer for JBoss AS 7, quality insurance is a great way of on-boarding, starting to work on transactions, most PHP applications were built with "auto commit" transactions, transactions are convenient, enhancing code coverage for the transaction manager, fixing own bugs filed as quality engineer, starting as narayana developer, narayana, arjuna and JBoss Transaction Manager are the same bits, migrating narayana to MicroProfile Long Running Action (LRA), building transactional file system JCA connectorz, the narayana bootstrap with XML (timeout, implementation, recovery, transaction log), transaction manager and transaction recovery manager are the key parts, the transaction recovery manager is needed to remember what the server did, XID vs. Global ID, transaction context is stored in a ThreadLocal, joining transactions with JPA EntityManager, UnitOfWork in EntityManager, JDBC and XA transactions, a XA JDBC driver has to be exposed to the TransactionManager, a local transaction can be directly managed by the EntityManager, the XA / 2PC (two phase commit) protocol in detail, EntityManager: transactions and flushing, XA optimizations, Quarkus and Narayana, storing transaction logs in a central database, @Stateless, @Transactional and UserTransaction, code simplification with CDI and EJB, premature transaction optimisation is the root of some evil, starting transactions at the boundary layer, slower performance without transactions, in business applications with some state you will always need something like local transaction, thinking differently with NoSQL, Dr. Martin Kleppmann (@martinkl) transactions, challenges with microservices and transactions.
Amstrad PC 1512, the first PC computer ever made by Amstrad, two floppies are better than a hard drive, deleting double dots, C/PM OS, BIOS as cheating detection, creating snake game in BASIC, playing with Turbo Pascal, from GO TOs over loops to procedures, objects, aspects to functional programming, exploring Mandrake Linux, Tibco Messaging and C++, killing yourself with casting, the C discipline checker - an enforced linter, 120 errors caused by Coke break, no version control -- no time machine, starting with Java 1.2, replacing buttons with images in Swing / AWT, memory leaks in Java UI, creating ASP websites for fnac, building shopping cart with VB, going back with Visual Basic debugger, exploring Java as C# alternative, WebSphere vs. WebLogic, WebLogic was the JBoss of early 2000's, Apache Excalibur container, editing TopLink files with Eclipse IDE, replacing TopLink with early Hibernate, providing Hibernate support, the Rational Unified Process Workbench, hacking the organization is important, the gradient from hacking to politics, JOnAS was big in France, translating Hibernate documentation, patching Hibernate via CVS and email, Gavin King, Oracle and annotations as XML replacement, xdoclet was a great EJB annotation PoC, Cedric Beust created XDoclet, early Apache Geronimo participation, a French engineer will only tell you what you can do better, XML mapping with deeply nested annotations as prototype, EJB 3 specification comprised the component model and the persistence, Eclipse IDE was late with annotation support, working on EntityManager API with Bill Burke, joining forces with Java Data Objects (JDO) to participate on JPA, switching from fnac to JBoss, the first day at JBoss, Gaving King and Christian Bauer were Hibernate consultants, Steve Ebersole worked on Hibernate Core and Max Andersen on Eclipse tooling, Gavin King implemented an early bean validation prototype and Emmanuel took it over, contributing to a mature opensource project is really hard, Google App Engine wanted to use Hibernate as persistence backend, then google decided to use datanucleus.org, Book Driven Development is better than Conference Driven Development, Emmanuel started OGM - the Object Grid Mapper, in NoSQL space the model is simpler, JSON-P or JSON-B can be used as replacement for JPA entities, JDBC is hard to use what explains the success of ORM products, RedHat acquired JBoss, the switch from 200 employee company to 2000 employees company, developer is king at RedHat, RedHat acquired JBoss right after the introduction of JPA, becoming an architect, debezium was started by Randall Hauch then continued by Gunnar Morling, creating architecture slides with Google Docs, throughput driven optimizations, with containers throughput becomes less important, Java was designed for throughput and not memory efficiency and startup time, openJDK team, middleware team at Redhat had conversations about the future of Java on containers, Kubernetes is your cluster manager, WildFly is the flagship and the integration point, Sanne Grinovero was behind optimizations, Java's metaspace was too high, Java is a highly dynamic environment and therefore hard to optimize, the Excelsior JET VM, GCJ, Project Maxwell, GraalVM and the compiler is written in Java, WildFly Swarm became Thorntail and was an attempt to make the runtime smaller, Java's memory usage is the real problem, Quarkus came with the idea to make all the optimization at build time, not runtime, Emmanuel started Quarkus with Jason Greene and Bob McWhirter, the very first line of Quarkus code was written in a pub, the Quarkus project name was Shamrock what was the name of the pub, 3 months time for a PoC, hibernate, CDI, JAX-RS and JDBC drivers had to be optimized for the MVP, June 2018 was the very beginning of Quarkus, the shamrock pub is located in Australia, docker containers are immutable and the WAR deployment does not fit into this model, ThornTail's hollow JARs separate the business logic from the architecture, one of the Quarkus inspirations is the Play framework, Hibernate Panache got the idea from Play persistence, wad.sh watches changes and redeploys WARs on-the-fly, QuarkEE makes Quarkus look like a Java EE application, Quarkus on GraalVM is the perfect storm, Jakarta EE is a good way to reset Java EE expectations, the j4k conference,
Thomson MO5, every school in France needs to have a computer, printing the name with BASIC, the REM sadness, making yellow boxes, programming Logo in French, writing "root" and "house" procedures, no procedures in BASIC, the ACSLogo for Mac OS X, Berkeley Logo (UCBLogo), the Amstrad PC1512, using AMOS programming language for writing games, writing invoicing software with 14 and AMOS, Zak McKracken and the Alien Mindbenders, Siemens Nixdorf PC, QuickBasic on Siemens Nixdorf DX2-66, the Persistence of Vision Raytracer, average calculation for school notes with QuickBasic, writing ballistic games for TI BASIC (TI 99/4A), playing Nirvana on e-guitar, starting with Java in 2002, the Rational Rose Logo Edition, learning Java EE on JOnAS, Apache Tapestry, consulting with Apache Jetspeed, writing Java EE code for 7 years, hardtimes with WebSphere, Xerces and ClassLoading, refactorings to Maven, mobile web / Grails involvements, starting at RedHat's mobile team - AeroGear, Matthias Wessendorf, Matthias loves Java Server Faces (JSF), the unified push server, starting keycloak involvement, the security challenge, the keycloak religion, keycloak ships as WildFly distribution, keycloak is a WildFly subsystem, keycloak uses hibernate for persistence, keycloak manages users with credentials, keycloak ships with ready to UI to manage users, keycloak functionality is exposed as REST services, there is a Java client available - as REST wrapper, keycloak is a "remote" proxy realm, keycloak ships with adapters for major application servers out-of-the-box, keycloak comes with SSO - different application servers can share the same session, the security realm is a "territory", in keycloak a session is optional -- a microservice can use JWT token, using OIDC tokens, keycloak comes with servlet filters for servers without adapter support, the new keycloak approach is the Keycloak Gatekeeper, Keycloak Gatekeeper is a sidecar service, apache mod_auth_openidc, keycloak is oidc compliant -- any generic OIDC library should work, the JWT creation tool JWTenizr, the "Securing JAX-RS Endpoints with JWT" screencast, the oauth flows, oauth authorization flow, implicit flow and the hybrid flow, access token has to have short lifetime, using services accounts for schedulers, keycloak has a logout backchannel - available from servlet filter, pushing a timestamp also causes logout, HttpServletRequest#logout also logouts, the killer feature: keycloak stores the private keys in one place and makes public keys available via URI,
Sebastien Blanc on twitter: @sebi2706
Pentium 1 with 12, 75 MHz, first hello world with 17, Quake 3 friend as programming coach, starting with Java 1.6 at at the university of Hradec Kralove, second "hello world" with Operation Flashpoint, the third "hello world" was a Swing Java application as introduction to object oriented programming, introduction to enterprise Java in the 3rd year at the university, first commercial banking Java EE 6 / WebLogic project in Prague with mobile devices, working full time during the study, the first Java EE project was really successful, 2 month development time, one DTO, nor superfluous layers, using enunciate to generate the REST API, CDI and JAX-RS are a strong foundation, the first beep, fast JSF, CDI and JAX-RS deployments, the first beep, the War of Frameworks, pragmatic Java EE, "no frameworks" project at telco, reverse engineering Java EE, getting questions answered at airhacks.tv, working on PhD and statistics, starting at h2o.ai, h2o is a sillicon valley startup, h2o started as a distributed key-value store with involvement of Cliff Click, machine learning algorithms were introduced on top of distributed cache - the advent of h2o, h2o is an opensource company - see github, Driverless AI is the commercial product, Driverless AI automates cumbersome tasks, all AI heavy lifting is written in Java, h2o provides a custom java.util.Map implementation as distributed cache, random forest is great for outlier detection, the computer vision library openCV, Gradient Boosting Machine (GBM), the opensource airlines dataset, monitoring Java EE request processing queues with GBM, Generalized Linear Model (GLM), GBM vs. GLM, GBM is more explained with the decision tree as output, XGBoost, at h2o XGBoost is written in C and comes with JNI Java interface, XGBoost works well on GPUs, XGBoost is like GBM but optimized for GPUs, Word2vec, Deep Learning (Neural Networks), h2o generates a directly usable archive with the trained model -- and is directly usable in Java, K-Means, k-means will try to find the answer without a teacher, AI is just predictive statistics on steroids, Isolation Random Forest, IRF was designed for outlier detection, and K-Means was not, Naïve Bayes Classifier is rarely used in practice - it assumes no relation between the features, Stacking is the combination of algorithms to improve the results, AutoML: Automatic Machine Learning, AutomML will try to find the right combination of algorithms to match the outcome, h2o provides a set of connectors: csv, JDBC, amazon S3, Google Cloud Storage, applying AI to Java EE logs, the amount of training data depends on the amount of features, for each feature you will need approx. 30 observations, h2o world - the conference, cancer prediction with machine learning, preserving wildlife with AI, using AI for spider categorization
Amstrad CPC 484, but Commodore had better games, learning BASIC driven by lack of games, hacking game loaders, C is the favourite language, with C you have the full control, C is concise, ISO DEE, writing ISO network layers in Ireland, writing reactive code in 1994, beautiful C code, processing bibliographic data with DSLs, maintaining passion and fun at indexdata.dk, enjoying the time at navy, clueless mainframe operators, writing programs in COBOL instead of queries, PDP 11 as simulator for naval training, writing application servers in C++ for telecom, EJB-like components in C++, Java UIs in 1998, Java should be good enough for writing service provisoning platforms, accidental discovery of Java Management Extension (JMX), first Java impression was not as good, JBoss was a heavy JMX user, JBoss was always manageable because of JMX, Rickard Öberg was a genious, dynamic kernel with dynamic extensions, Marc Fleury started JBoss, JBoss 2 was a rewrite, JBoss 2 kernel was the base for project "Junction" renamed to Action Streamer, JBoss became more interesting than the day job, core JBoss developer since 2004, CORBA / CSIv2 skills were needed for J2EE certification, transferring transactions and security context with CORBA extensions, JBoss was the first J2EE certified server, Dimitris was project lead for JBoss 4 and 5, later manager, now responsible for Thorntail, Vertx and Quarkus, in JBoss CORBA objects were dynamically generated, the paper: "The JBoss Extensible Server" from brazilian professor, Thrift, gRPC and Co. are CORBA, just reinvented, CORBA network layer is very efficient, EJBs killed CORBA, JBoss unified the web container and EJB container in a single JVM to prevent remote communication, microservices are distributed, sometimes unnecessarily, EJBs and WebContainers had to split into separate JVMs back then as well, Quarkus is the exact opposite of WildFly, Quarkus and WildFly also have different goals, the WildFly.next discussions at RedHat, Jason Greene and Bob McWhirter had WildFly discussions, Emanuel proposed a single runtime for everyone, the one base runtime for everyone prototype, SubstrateVM produced the best native code, Hibernate on Quarkus was a break-through, Quarkus is a collective, interdisciplinary effort at RedHat, Quarkus started in spring 2018, Quarkus pushes the Java EE deployment model further and the optimisations are collateral, Quarkus looks and feels like Java EE or MicroProfile, Quarkus does not require proprietary imports, Quarkus went for native optimization, and optimized HotSpot JVM as well, Quarkus build makes code less memory hungry at HotSpot, Quarkus takes have of the memory with fast startup time, Quarkus comes also with runtime improvements in HotSpot and native mode, the idea for build-time optimizations started at WildFly, with pre-computing the deployment model, Quarkus extension model allows the integration of 3rd-party code for native compilation, Quarkus development mode comes with scripting-like experience, Quarkus FatJars aren't fat, nor self-contained, Quarkus runner-jars are optimized for Docker and so clouds, Quarkus offers imerative and reactive APIs, Netty, Vert.x and Undertow are unified inside Quarkus, Panache ORM is an experiment, but could become a MicroProfile or Jakarta EE standard, working with standards is difficult, Quarkus pushes standards further, developers hack the code first, then standard comes, writing Kubernetes operators with Quarkus
Proposal on Jakarta EE’s innovation & relationship to MicroProfile, using MicroProfile as an incubator, JCrete is not vacations, MicroProfile is production ready, MicroProfile Metrics, MicroProfile Fault Tolerance, MicroProfile OpenApi, MicroProfile OpenTracing the incubation process for Jakarta EE, applying what made Java EE great to Jakarta EE, the difference between EE4J and the incubator proposal, the umbrella Java EE specification is lacking in Jakarta EE, predefined templates with convention over configuration and design principles, Jakarta EE and MicroProfile websites are not consistent enough, how to bring together Jakarta EE and MicroProfile, bundling Jakarta EE and MicroProfile APIs, the Jakarta EE usability project, the developer experience project, proposing a gist-like repository with common "Jakarta EE / MicroProfile look and feel" code snippets, both: MicroProfile and Jakarta EE could use the "jakarta" namespace, MicroProfile will have to refactor the packages anyway, focus on speed in developer workflow, OpenLiberty has a fast-deployment maven plugin, in "enterprise" Java there is almost no "enterprise" left, moving from Java EE to Jakarta EE will solve the marketing issue,
physics and math studies, in Ecuador you have to choose your major earlier, changing from computer science to finance, without learning, everything becomes boring, the math never lies and is therefore simple, the formulas and understanding the "why", it is not about the frameworks, it is about the principles, choosing calculus for fun, the dry C and C++ without microprofile, the NAG Numerical Library for Fortran, The Gödel, Escher, Bach Book: An Eternal Golden Braid the untold secrets about David Blevins, Apache TomEE, it is not about titles, it is about responsibilities, growth can be healthy, the relation between TomEE and Tomitribe is similar to the relation of Glassfish and Payara, Tomitribe provides support for TomEE, Tomcat and ActiveMQ, Tomtribe partners with Sonatype to provide patches faster, OpenSource is not a business model, Apache Las Vegas conference happens before CodeONE, opensource projects should not just survive with the sponsor's help, TomEE comprises nine top level Apache projects, commercial support saves time and money, Sun created JCP, Sun welcomed everyone else, 410 Java Specification Requests (JSR) were submitted and about 130 rejected, 59 IP owners are asked to transfer their knowledge from JCP to Eclipse, JCP was a great success, JCP came with documentation out-of-the box, Jakarta EE Working Groups are the successor of JCP, large companies are not evil, but they are not always reasonable, MicroProfile was founded 3 years ago, JSR 382: Configuration API 1.0 was filed under the Eclipse Foundation Inc. name, MicroProfile highly welcomes contributions, if you have ideas - implement it, MicroProfile comes with flat organizational structure, it is easier to start a MicroProfile project, than an Apache project, the Tomitribe projects, the Tribestream API gateway, Tribestream was launched at CodeONE, TomEE does good and Tomitribe even better, make your first commit and you get a nice banner,
Playing chess with zx81, huge computer scene in Glasgow, BBC micro then saving for Acron Electron -- the cheaper BBC Micro, programming text adventure games, Forth on RML 380 Z, Sun's OpenBoot was written in Forth, Dragon 32, controlling the computer world with 13, programming colourful fractals, "do whatever you have permission to", then accessing the printer queue, transactions research and Java, IBM develops Java Transaction Service (JTS), travelling to Javasoft in Silicon Valley to transfer the JTS knowledge, moving from JTS to JVM implementation group at JDK 1.2 timeframe, having fun with IBM Java classloader, heap corruption, "lighter" experience with Eclipse RCP, Java Transaction API, Java Transaction Service and CORBA's Object Transaction Service, tranactions are a gift, just learn databases, "we don't need your transactions" in 2006, reused blog post from 15 years ago will be a big hit, IT became fashion -- everything is just reframed, implementing RAID algorithms, enjoying Java EE experience with OpenLiberty, deploying 50 times a conference session with wad.sh, having more coffee with classic WebSphere, OpenLiberty loose applications, OpenLiberty guide to loose applications, starting TX at facade level, JPA and transactions, getting two copies of the same object in the same request, every request is a transaction, loosing up the thread context, project Loom, transactions are making the developer's live simple, the pre-prepare phase, errors on CICS vs. MTS, solving the transaction diamond problem, reactive programming and backpressure, application servers and backpressure, you are not Google, reactive platform at Uber, too much sophistication, too complex to debug, and the human problem, functional reactive programming, plugging things together in reactive programming is appealing, the simple interface between publisher and subscriber, reactive programming as integration hub, learn Java streams first and reactive concepts will come easily, HTTP request / response model does not fit well with reactive programming, backpressure and kafka, Kafka's configuration, reactive streams operators as enabling layer, microprofile reactive messaging is similar to Message Driven Beans, Event Sourcing with debezium.io and Apache Kafka, event sourcing with GRPC, Apache Pulsar the "Kafka.next", SmallRye, CloudEvents and MicroProfile, SOAP envelope
Using TRS 80 and owning a Commodore 64, arcade 101 at high school, computers were special at Chicago's schools, TRS 80 basic, C 64 for Christmas, typing-in applications from Commodore 64 magazine, writing self-modifying code with assembly on Commodore 64, Peeks and Pokes in BASIC and sound chip, PC at college, Cameron Purdy (#16 airhacks.fm episode) to hack 16h to complete a program, because there was no way to save it, misusing Lloyd as 60 words per minute fast Datasette, peek and pokes in a loop, immediate Unix love, PDP 11 at the computer center, writing custom forms as a student, c shell and the rouge ascii game, Minix was not free, coherent UNIX on 10 floppies, lilo, destroying the Windows MBR with dd, from C shell and Ultrix to HP UX, writing data acquisition systems at Maytag, HP 8652 Basic programs for data acquisition, sending data to UNIX system written in C, Maytag is a refrigerator company based in Iowa, writing Java at Household International, moving HP UX Unix to the desktops, running Solaris on PCs, unbelievable under construction Duke applet, starting NetObjective after playing with Java, writing Telnet in Java, the first namespace hysteria in Swing - com.sun.swing was migrated to javax.swing, selling E10Ks in 1997, Ultra Sparc, Jini and JXTA, IDE as JINI application, how memory problems made a great JINI leasing demo, picking appservers in early 2000's, autofs mount as newsreader by following the path backwards, Jiro, iPlanet in 2005, who cares about your GlassFish modularisation?, Java EE WebProfile forced the modularisaion, HK2 module system, Kohsuke Kawaguchi, Jerome Dochez, Hk2 the layer above OSGi, OSGi enterprise in GlassFish was a wasted investment, GlassFish could not find a home at Oracle, the end of commercial GlassFish, Oracle was very straight forward with their customers and top down in the company, Thorntail will move forward until the end of its lifecycle, quarkus.io is the true innovation, living in quarkus.io dev mode, quarkus is new and familiar at the same time, the first Quarkus commit was in 2018, QuarkEE as out-of-the-box experience, John isn't a QuarkEE fan, QuarkEE uses twice as much RAM, Java's RAM consumption is a problem for certain customers and Quarkus can save it, RAM is cheap but not the servers, out-of-the-box experience matters, Panache ORM - the simple ORM but could become a MicroProfile standard, it is hard to innovate without breaking changes, the day "-1" MicroProfile conference call, javax namespace issue, John is tending towards gradual transition of javax namespace, there is no backout from clean cut
60-70% growth every year, customer base is growing quickly, 30 employees, great team with great vision, Payara is self-founded by commercial support fees, there are a lot of "traditional" applications in production, not every application needs Kubernetes, Payara clients are running their software on bare metal and on containerized platforms, it doesn't take much to support Kubernetes, Docker and Kubernetes are infrastructure and not a programming model, Java EE programming model is productive and can be taken to Docker and Kubernetes infrastructure, config externalization is the major task for Kubernetes support, Payara clustering discovery service uses Kubernetes for lookup, Payara Admin server is able to manage Payara Docker nodes, Payara Admin could replace the Kubernetes scheduler, scalability based on business metrics, the JavaONE GlassFish 3 cloud demo, aggregating metrics in a cluster, Payara Clustering brings data closer to processing, Payara Cluster is a distributed cache aka data grid, smart proxies with JAX-RS, CORBA was replaced by JAX-RS, load balancing with JAX-RS, in Payara 5 deployment groups and data grid comprise a cluster, Payara Server and Payara Micro support both MicroProfile and Java EE 8, application server as managed runtime, Payara comes with request tracing, database monitoring, upcoming releases will expose more metrics. you should not need an APM tool to monitor an application server, Canadian government contributes to LightFish, guidance for Maven bloat prevention, Payara Source To Image (S2I) https://github.com/AdamBien/s2i-payara and Payara Micro Source To Image (S2I) https://github.com/AdamBien/s2i-payara-micro, Payara Server supports more APIs than Payara Micro, Payara Server is capable to manage multiple instances and comes with admin console, Payara Micro runs on its own and is designed to run within docker containers, clouds and kubernetes, you could start with Payara Server and migrate to Payara Micro later, Payara Server and Payara Micro runtimes are similar, Payara Micro does not support OSGi - what is a feature, the only runtime difference between Payara Full and Micro is OSGi, Payara Micro doesn't have to be installed, the core development happens on Payara Server, Payara Micro is just repackaging of Payara Server, Payara Micro uses hardcoded classpath, the javax Jakarta EE namespace issue, Java EE backward compatibility is great feature and also a weakness, Jakarta EE is boring, MicroProfile iterates more quickly, Jakarta EE release cadence could be once every 2 year, MicroProfile releases 4 times a year, Jakarta EE and MicroProfile are popular in Europe, managing satellites with GlassFish, kubernetes anti-pattern, running OpenShfit cluster organization-wide
Ben Farell on twitter: @bfarrellforever
the 250 miles terminal connection, Commodore PET, battle ships on paper tapes, mocking the login screen on Commodore, reverse engineering Space Invaders, the lack of games in UK was a motivation for writing games, learning peek and pokes, Commodore engineering team wrote a book about machine code, Basic on BBC model B, Pascal and C on EPROMs, building a hotel booking system on Pascal, building a pseudo operating system with C, Concurrent Pascal, Cfront - the early version of C++, Atari ST came with C support, C++ over Concurrent Euclid, working with Andy Tannenbaum and Bjorne Stroustroup on Minix, porting Minix to Atari ST, Arjuna the Indian god, Indian Gods over Celtics, Arjuna -- the object oriented transaction system, started in 1985, inheriting transactions, transactions are not about HA, transactions are about recoverability, starting Java as Oak, the shiny object syndrome and transition to Java, writing web browsers in Java, porting Arjuna to Java with Blackdown Java, Jim Waldo and Note on Distributed Computing, opaque over transparent, Johan Vos was a member of the Blackdown team, RPC with C++ and Arjuna, almost serverless, packing and unpacking instances and the Lock Manager, 2PC was the default, without X/Open XA heuristics the system would block forever, XA heuristics were introduced to make independent decisions, enforcing consistency in microservices with 2PC/XA is hard, SOA and microservices come with similar challenges, there is no a single transaction model applicable for every single use case, XA/2PC is lesser suited for long running actions, transactions were out-of-fashion - now they are back, Google Spanner is transactional, Arjuna was acquired by Bluestone, Arjuna Technologies was acquired by HP, JBoss did a partial acquisition of Arjuna, before the Arjuna acquisition, JBoss couldn't handle 2PC properly, Bluestone became the HP application server, JBoss was always opensource and good quality code, J2EE came before annotations - metadata was attached with partially redundant XML, Mark became RedHat CTO in 2009, MicroProfile is great and there is a lot of interests in evolving Java into clouds by the community, Jakarta EE was a great move by Oracle in 2017, Jakarta EE has to move faster, Jakarta EE is more like the stable OS, MicroProfile is where the innovation happens, there are no more monolithic application server, what does "enterprise" mean?, QuarkEE is opinionated Quarkus,
Eastern computers and Robotron KC 85, CPU slicing, screensaver as source code, Hello World in Pascal with 14, University in Dresden, AMD and Java 1.2 with Forte for Java, starting at Saxonia Systems as consultant, having fun in a Java EE 5 course, the EJB 3 and Guice blog post, the effect of a link, Java EE 5, the "dinsoaur version" was productive although you had to write interfaces, early EJB and J2EE were bloated, but it was 15 years ago, working at Otto the German "amazon" and Kuehne and Nagel, just use the most productive stack you can get, what does "modern" actually mean?, applying quantum computing to CRUD, it was hard to find a killer use case for WildFly Swarm, quarkus is a Java EE + MicroProfile subset with useful features, FatJars do not make any sense in a layered file system, bare metal infrastructure is the killer feature of UberJars and FatJARs, Heavyweight vs. Lightweight JavaONE session, quarkus native image is a fraction of JVM size, the "compile time boot", performing optimizations at build and not at boot time, with quarkus CDI performance might be as good as EJBs, deployment descriptors are only needed at build time, boring programming model with optimizations under the hood is true innovation, MicroProfile FaultTolerance combines easy programming model with Hystrix's capabilities, don't re-invent the wheel, BeanValidation's in XML-configuration is not supported in quarkus native mode, QuarkEE release, using quarkus for web development, validating design and architecture with deptective, deptective enforces the rules at compile time, deptective is a plugin of javac compiler, javadoc may cause package cycles, measuring packge coupling and cohesion, jacoco as code coverage plugin for quarkus, debezium detects changes and passes the events to Apache Kafka, debezium uses DB APIs, logical decoding in PostgreSQL, debezium receives updates even it the application is not running, listening on the transactional log of the database.
rubber-keyed ZX81, C64, Basic, tons of incorrect rows of hexcode, transitioning from Basic to assembly, games were an inspiration, 40mins to load the game, Turbo Copy for software refreshment, transitioning from software to solding transistors, flip-flops with 10 years, programming Logo with Atari ST, HTL in Austria, Pascal on 286 Commodore PC 20 with monochrome computer, host programming on Digital Equipment PDP 8e, Sun's pizza boxes, drinkomat the drink (also vodka) portioning machine, replacing 2 PCs with one microcontroller, the first 3D printer, testing insulin pumps, learning C++ with Glockenspiel C++ compiler, starting with Java 1.0.2, building stock exchange software with Java, brilliant Martin Poeschl, Maven 1 and Cocoon, JRun was servlet-like engine, Borland JBuilder, building platforms for Austrian insurance market platform in 1999, Lutris Enhydra application server, Tomcat was donated by Sun to Apache, never control program flow with exceptions, Jigsaw - Apache servlet engine, XMLc was a built-step in Ant, DOM manipulation in Java on the server, defining data structure in XML and generating the DAOs, enhydra was Canadian then donated to ow2, Windows and OS2 programming, C# came 2002, first EJB-drafts were nightmare, EJB could be implemented better with Objective-C Portable Distributed Objects from NeXT, EJB was a huge buzz topic pushed by Microsoft's DCOM, MTS was almost like EJB, DCOM came before EJB, MTS came after EJB, "remote first" was wrong, macroservices are more appealing for enterprise, delivering in 2004 25 TB of music (and Jamba ringtones) to 16 million customers and with Servlets and Resin from Caucho, hardcore threads were native, Mark worked as freelancer, a few big Sun Enterprise 400 with MySQL without transactions, optimizing for read only, projects under fire, the challenging part in the backend were contracts and payment, switching logic with re-deployment with Groovy, switching from Spring to CDI, refactoring PHP to Java in 5 years, Seam 2 didn't had the future, serving 5 millions impressions / 12k requests per minute in the first day with 1-month old Java EE 6, Glassfish is rubbish, Payara is great, Payara delivers patches incredibly fast, Java EE community is really nice, the real benefit of opensource is sharing costs, experience, maintenance, testing costs and fork prevention, JPA is too much magic but you get tons of answers for free, three category of projects: perfect, problematic and completely broken, the javax namespace issue, javax became immutable, Geronimo app server is dead, the Geronimo contains Java EE API specs, one-shot migration to jakarta namespace is not that hard, migrate once, but do it right, javax migration is a lorge task for vendors but a small issue for business, developers are still thinking is "J2EE", Eclipse is too protective and should open to other foundations and communities
the Java EE Testing survey and possible room for improvements, testing is too hard with severe consequences, reasonable projects are interested in delivering good software, large enterprises are more interested in statistics, testing is about increasing developer's confidence, confidence decreases with the length of time spent outside the project, in 1996 you would test with a bunch of main methods, most projects are ignoring System Tests because the statistics are not gathered, "test first" or last does not matter, you only have to deliver the tests with working software at the same time, running System Tests with code coverage, fast and long running modes, Unit-, Integration-, and System Tests are naturally ordered by their execution time, in business projects unit test coverage can be fairly low, in business projects arquillian comes with a little added value, in Integration Tests it is crucial to use the same version of libraries, tests do not accurately represent the production environment, System Tests are reused as Stress Tests, JMH is a great library for stress tests, at IBM there is a dedicated performance team, in projects torture tests are a good start, toxiproxy by shopify, management driven code metrics is a failure of management, unit tests should be about verifying the behaviour not the implementation details, too many unit tests increase the costs of refactoring, unit tests are running in seconds, integration tests in a few minutes, the performance of system tests really depends on the system, integration tests give more confidence, than unit tests, unit tests are great for productivity, running servers in code coverage modes would be useful, jacoco code coverage metrics could be exposed via JSON,Andy on twitter: @andrew_guibert and github.
C64 and sports games, Weiden is not in Bavarian Forest, soccer as motivation for programming, writing first programs in basic with 17, writing contacts management, PCs are boring machines, but good for business, Java is the best programming language, Pentium 1 was introduced at CEBIT in 1993, the dream about an own booth at CEBIT came true, webdesign software based on applets (XPage) was very successful at SYSTEMS in Munich, Markus was the business man and had no time for programming - like Steve Jobs, self-financing with selling products, competing with Microsoft and Adobe, writing a 4GL Java-based development environment like Visual Basic called XDev, Java Developers don't like the Drag and Drop programming experience, building an IDE from scratch, discussions with Sun Microsystems about StarOffice integration, migrating from Swing to SWT and Eclipse, using Vaadin as UI technology, connecting beautiful UI to DB was too hard, databases have more types than Java what makes code generation hard, in 4GL the database comes first, RapidEclipse is free but commercial support is available, XDev provides tool and project support, RapidClipse understands rich database types and generates JPA POJOs, Hibernate importer, how to write queries in Java, implementing JPA-SQL is based on xtext by itemis and generates JPA-QL from SQL, storing data is still too complicated, serialization looked promising but was too unsecure and only entire objects can be serialized, Kryo, Fast Serializer, JetStream (renamed to Microstream) serializer, the database engine stores objects in any file storage, there is no impedance mismatch, the native Java storage engine, queries are performed with Java 8+ streams, JCA connector passes transactions and security context to the application server, JCA prototypical implementation, kubernetes persistent volumes, Bavarian Forrest is like Canada, the largest walking robot, Roding race car, being a TV host on Giga, constant 30k downloads and the XDev TV, DVDs were more successful than TV, JCon and the coding keynote, Java EE as secret weapon at JCon, stealing (adapting) the "no slides" ideas, the world first free, physical, Java magazine JAVAPRO with 8500 readers, community prefers Java-only conference,Markus Kett on twitter: @MarkusKett. JetStream was renamed to MicroStream.
the result of pressing the break button on a BBC computer, and ZX Spectrum, Space Invaders with Basic, extending minecraft with Java, accidental tester career, best interviewees got programmer jobs, hackers and testers, developers like the happy path, unit test coverage is useless without good asserts, is 80% code coverage a valuable target?, code coverage was used as a motivation for writing tests, reflection utilities to increase code coverage, getters / setters never brake, Code as a Crime Scene book, methods longer than a screen are problematic, the ratio between trivial and good asserts, a good javadoc and unit tests follow similar principles, system tests are the most important one, unit testing is good for checking error scenarios, the more tests you have, the easier it is to locate errors, the Law of Triviality requires standard names for test categories, integration testing and system testing, reusing system tests as clients and stress tests, UK retailer goes down, take the max load and double it, jbmc is bytecode verification tool, diffblue cover generates unit tests, generating unit tests quickly for legacy backends, playground, What is the AI in “AI for Code”? blogpost, diffblue blog, @diffbluehqJames Wilson on twitter: @jgwilson42. Checkout: javaeetesting.com - the online test about Unit-, Integration-, and Stress Testing and see you at airhacks.com.
1982, Dragon 32 and Basic Programming with 12, starting with JDK 1.0, writing a JMS provider for WebSphere v6, no ceremony JMS, Apache Kafka considered simple, why writing a Kafka application is harder than a JMS application, there is a big architectural difference between Kafka and JMS, or message queuing and event stores, Kafka remembers historical data, JMS is about fowarding messages, with Kafka it is harder to write conversational systems, clustering singletons is hard, running Kafka on a single node is easy, "deliver once and only once" is the killer feature of persistent JMS queues, JMS topics are nicer - you can send messages to unknown receivers, the killer use cases for JMS and Kafka, JMS is good for system coordination and transaction integrity, Kafka is well suited for (IoT) event buffering and re-processability, 2PC, XA and the advantages of middleware, in distributed transactions everyone has to remember everything, we only need distributed and rock-solid persistence, kubernetes pods are stateless, challenges of using Kafka, setting up for production can take months for an average Java programmer with JMS background, restarting Kafka brokers can be challenging, in Kafka you are communicating with the cluster, MQ is a collection of individual queue managers, in MQ there is a directory of resources which knows where the queues are hosted.Andrew on github, and LinkedIn.
starting with Visual Basic in high school, with the goal to build games, then quick transition to C++, creating Tetris from scratch in weeks in C++, building first commercial financial planning application with PHP, starting with Java 1.5 and annotations in 2007, Java is popular in Australia, building Seam applications with JBoss 4, contributing to Weld in spare time, improving the performance and startup performance of Weld, working for RedHat as JBoss AS 7 developer, JBoss is more than the application server and the advent of Wildfly, the braning clean up, creating Undertow, WildFly was shipped with deactivated EJB pooling, too small EJB pools can cause performance issues, how to kill EJBs with CDI, EJB vs. CDI, interview with Pavel Samolysov and EJB vs. CDI performance comparison, quarkus is not using reflection for injection, a small team (8 people) started quarkus to leverage GraalVM, the goal of quarkus is to make a subset of Java EE natively compilable to an "unikernel", updating the cloud platform without recompiling the app, serverless with quarkus, serverless without the function disadvantage, 20MB self contained, native images, building Java EE / Jakarta EE unikernels, extremely fast start times for Java EE applications, native images are running with a fraction of RAM, at one point in time, quarkus might be commercially supported by RedHat, CDI portable extensions are not supported now, quarkus wizard is not based on Maven archetype - what is a great idea, Maven is only one of many possible entry points to quarkus, a really good developer experience was always the main goal, hot reload is a must, currently the classloader with the "business" part is just dropped and the app is reloaded, adding dependencies via CLI or pom.xml, quarkus ThinJARs are compatible with the ThinWAR idea, FatJAR's builds have to be slower, packaging all dependencies into a single JAR, using Chrome Dev Tools Protocols for hot reloading the browser, misusing quarkus for building command line tools, community extensions are on the roadmap, quarkus is going to be well integrated with OpenShift, quarkus forum.Stuart on twitter: (@stuartwdouglas), and github.
old IBM PCs and old school Legos, starting programming in elementary school to write video games, the market for enterprise software is better, than the market for video games, World of Warcraft is good for practicing team work, ice hockey, snowboarding and baseball, getting job at IBM by pitching Nintendo WII hacking, why Java EE is exciting for young developers, OpenLiberty is a dream team at IBM, providing Java EE support for WebSphere Liberty and WebSphere "traditional" customers, Java EE 8 was good, and MicroProfile is a good platform for innovation, quick MicroProfile iterations, sprinkling MicroProfile goodness into existing applications, MicroProfile helps glue things together, OpenLiberty strictly follows the Java EE standards, how OpenLiberty knows what Java EE 8 is, OpenLiberty is built on an OSGi runtime, features are modules with dependencies, OpenLiberty comprises public and internal features, Java EE 8 is a convenience feature which pulls in other modules / features, OpenLIberty also supports users features, OpenLiberty works with EclipseLink, as well as, Hibernate, OpenLiberty comes with generic JPA support with transaction integration, Erin Schnabel fixes OpenLiberty configuration at JavaONE, IBM booth with vi in a few seconds, Erin Schnabel is a 10x-er, IBM MQ / MQS could be the best possible developer experience as JMS provider, Liberty Bikes - a Java EE 8 / MicroProfile Tron-like game, scaling websockets with session affinity, tiny ThinWARs, there is MicroProfile discussion for JWT token production, controlling OpenLiberty from MineCraft, testing JDBC connections, BulkHeads with porcupine, all concurrency in OpenLiberty runs on single, self-tuning ThreadPoolAndy on twitter: @andrew_guibert and github.
being chief Enterprise Service Bus Officer at IBM (not true), Lead Java Advocate for Java at IBM (now true), Sebastian still likes Java EE, the definition of Serverless, there is no need for functions in serverless computing, a reference to episode with Bruno Borges "Jakarta EE / MicroProfile in the Clouds: Runtimes not Servers", the difference between servers and runtimes, focussing on ThinwWARs is serverless, immutable infrastructures with immutable layers, pushing 50 times a day a ThinWAR to the cloud, Payara Configured as example for intermediary layers, Payara s2i, misusing Docker Registry as "FTP", ThinWAR upload triggers a hook and rebuilds a server, ultra productive Java EE, servers do not matter, using FaaS to trigger server re-configuration, functions are too fine grained for the implementation of stock applications, implement the added value of clouds by injecting cloud services, cloud bootstrap / initialization code looks like from 1945, externalizing cloud libraries to immutable images, added value of istio at openshift, cross cutting concerns with Istio, canary releases, routes and observability, istio adds additional configuration overhead, istio adds technical features on top of openshift, a possible killer features of istio, monitoring database traffic with istio, Istio as "feel good factor", some technical dashboards are as usable as lava lamps, monitoring external services, artificially slowing down connections in tests, MQS, hello worlds with Kafka are great, two lines to send a JMS events and one annotation to receive a message, Kafka is great as managed service, the next killer feature of MQS, killer runtimes with microprofile and Java EE, you can find us at jakartaee.blog, my blog is not usable as source for articles,
mvn clean, apache maven commitment and committing, Watch and Deploy (wad.sh), Atari 800XL, hacking basic with 10 years, peeks and pokes, MS DOS and startup screens, JDK 1.4, illegal generics, Java EE on JBoss was good, not the build process, intelligent builds with Maven, Apache Jelly, Jason van Zyl, Maven vs. Ant, loosing information with Google Web Toolkit (GWT), parsing Java with qdox, Paul Hammant, Maven Release Plugin "Fix It" video , Using Java console for passwords and the bash history, Java 6 and password encryption, clarifying the development of Maven plugins (default values and expressions), going from Maven 1 to Maven 2 and the respository structure, from Maven 2 to Maven 3, Eclipse IDE wanted Maven 3, Maven 3.7 is (probably) going to optimize downloads, there will be no Maven 4, Maven 5 will rely on pom's model version 5, splitting pom into local and remote part, writing POM in alternative formats, takari.io, takari polyglot, Maven extensions,plexus classworlds is Maven's OSGi, what is the default version of apache Maven plugins, is it possible to pull "latest" apache maven plugins, Maven extensions for plugin version configuration, clean poms, WAD runs all the time, using GraalVM to make a native version of Maven, Maven Archetype always generates parents, Up For Graps, Maven 5.x: How to be prepared for the future?, Maven is probably the only build tool, with tight integration with Java Platform Module System, Gradle, Apache Buildr is EoL, Bezel, Apache Ant is not dead and supports Java 11, Robert is a freelancer, CEO of SourceGrounds and available for hire.
java -jar glassfish.jar, Community Management at Sun, Developer Relations, how to talk to developers, Texas Instruments 4a, a circle qualifies as "Hello World", Prolog to Java Applets migration for National French Space Agency, Java Center of Excellence at Sun Microsystems, Sun / JavaSoft / IBM as dream jobs, Scott McNealy and the ability of predicting the future - a reference to airhacks.fm episode #19 - interview with Scott McNealy, starting at Sun in 1998, Sun Netscape Alliance, iPlanet Appserver, moving a Reference Implementation to a product called "GlassFish", HK2, GlassFish started faster than Tomcat, moving the industry with GlassFish, fascination with modularity, NetBeans as platform, plugins as quality asurance, lightweight runtimes with 500 MB WARS, making servers bigger and deployables smaller, docker changed the conversation, dealing with boring technologies, different language communities at Google, Java is less ceremonial, than people think, the popularity of Java at Google, AppEngines 10th anniversary, Apache Beam and Google Dataflow, how Sun lost the engineers at Java 5 timeframe, a huge amount of Google projects is based on Java, AppEngine is "serverless", Sun and Google have a lot in common, JAX-RS is Google Cloud Endpoints, Managed PubSub service, PubSub is like JMS, AppEngine as PubSub message listener, Cloud Spanner -- a distributable scalable persistence, DataStore supports versioning is a document, key value store, canary deployments, Objectify an ORM for DataStore, Cloud SQL and PostgreSQL, BigTable, exports to BigQuery, istio , Kubernetes, Helidon on Google Cloud, Kubernetes Engine, you can find Alexis at twitter: @alexismp, LinkedIn, medium: @alexismp and his: blog.
A conversation with Steve Millidge, (@l33tj4v4) about pre Java 1.0, persistence and OODBs, OrionServer, payara.fish, Payara Micro vs. Payara Server Full, lightweight Java EE, microprofile, EE4J and why Java EE is the perfect Cloud Native platform.
A conversation with Erin Schnabel (@ebullientworks, ebullientworks.com) about: the beginnings of Java, robots, CORBA, RMI, WebSphere, OpenLiberty, Services, Java EE, WebSockets, Cloud Native, Microservices, GameOn Productivity and the 10 years cycle
A conversation with Sebastian Daschner about: Java EE, EE4j, Microprofile, Swagger, JAX-RS Analyzer, CQRS, Microprofile Book: Architecting Modern Java EE ApplicationsWebsite / Blog / Newsletter, @DaschnerS, Java EE book announcement, Architecting Modern Java EE Applications book (amazon), Architecting Modern Java EE Applications book (packt)
JavaONE 2017 keynote, FN, Java 9, serverless Java, Java EE 8, EE4J, Microprofile