Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Your Language  
PlanetNetbeans
Planet NetBeans is an aggregation of NetBeans related musings from all over the Blogosphere.
DukeScript - November 20, 2017 11:03 PM
Apache HTML/Java API version 1.5.1

The HTML/Java API has recently been donated to the Apache Foundation. The incubating HTML/Java project (that forms the basis of DukeScript portability) successfully passed Apache diligence verification and published version 1.5.1. To bring you the best features of the Apache released version, there is a new set of DukeScript Maven Archetypes available: uploaded to Maven central as version 0.18. In addition to that the archetypes also come with support for MobiDevelop version of RoboVM. Use via command line as:

$ mvn archetype:generate 
	-DarchetypeGroupId=com.dukescript.archetype
	-DarchetypeArtifactId=knockout4j-archetype  # or cru4j-archetype or visual-archetype
	-DarchetypeVersion=0.18 # or newer version
        -Diospath=client-ios # if you want iOS support
$ cd the_created_project
$ mvn install
$ mvn -f client exec:exec
$ mvn -f client-ios robovm:iphone-sim

or follow the visual tutorial to get started from an IDE.

APIDesign - Blogs - November 20, 2017 12:33 PM
Type-safe Parsing of JSON without any Reflection

In need of compiling Java ahead-of-time? See jsonparse example showing a Maven project that can turn your Java code into self-contained, small (less than 5M) and effective code suitable for your microservice or lamda as a service setups. Thanks to SubstrateVM!

--JaroslavTulach 12:33, 20 November 2017 (UTC)

Adam Bien - November 19, 2017 03:57 PM
JAX-RS Client, javax.net.ssl.SSLHandshakeException and Solution

The following exception:


javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target
    at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:284)
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:278)
    at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:767)
        

is thrown during the initialization of JAX-RS / HTTPs connection and caused by the lack of a certificate in Java's keystore. A certificate import fixes the problem, for System Tests, however, a certificate verification is not required (except in cases where certificate verification is tested) and can be omitted:


public class SSLClientIT {
    
        private Client client;
    
        private String host = "https://...;
        private WebTarget tut;
    
        @Before
        public void init() throws KeyManagementException, NoSuchAlgorithmException {
            TrustManager[] noopTrustManager = new TrustManager[]{
                new X509TrustManager() {
    
                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
    
                    @Override
                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                    }
    
                    @Override
                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                    }
                }
            };
            
            SSLContext sc = SSLContext.getInstance("ssl");
            sc.init(null, noopTrustManager, null);
            
            this.client = ClientBuilder.newBuilder().
                    sslContext(sc).
                    build();
            this.tut = this.client.target(this.host);
        }
    
        @Test
        public void get() {
            String result = this.tut.request().get(String.class);
            System.out.println("result = " + result);
        }
    
    }

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 16, 2017 11:08 AM
Convenient http filtering with Servlet 4.0 and Java EE 8

HttpFilter was introduced with JSR 369 / Servlet 4.0 and Java EE 8.

The HttpServletRequest and HttpServletResponse parameters are directly passed to the HelloFilter#doFilter method:


import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebFilter("/*")
public class HelloFilter extends HttpFilter {

    @Override
    protected void doFilter(HttpServletRequest req, HttpServletResponse res, 
    FilterChain chain) throws IOException, ServletException {
        chain.doFilter(req, res);
        res.getWriter().print(" is great");
    }
}

The servlet does not know anything about the HelloFilter:


@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().print("Java EE 8");
    }

}

curl (...)/HelloServlet returns Java EE 8 is great.

See you at Java EE 8 on Java 9, at Munich Airport, Terminal 2
Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 15, 2017 08:39 AM
Fetching content reactively with JAX-RS 2.1 client and Java EE 8

Java EE 8 with JAX-RS 2.1 / JSR-370 introduced a JAX-RS Client API integrated with CompletionStage (aka reactive client).

Now an asynchronous request may return a Java 8 CompletionStage which allows a pipeline-style programming:


import java.util.concurrent.CompletionStage;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
import org.junit.Before;
import org.junit.Test;


public class ReactiveClientTest {

    private WebTarget tut;

    @Before
    public void initClient() {
        this.tut = ClientBuilder.
        newClient().target("http://airhacks.com");
    }


    @Test
    public void reactive() throws InterruptedException {
        CompletionStage<Response> stage = this.tut.
                request().
                rx().
                get();
        stage.
                thenApply(req -> req.readEntity(String.class)).
                thenAccept(System.out::println);
        Thread.sleep(500);
    }

}

The JAX-RS 2.1 client requires the following dependencies:


<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.26</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>2.26</version>        
</dependency>

See you at Java EE 8 on Java 9, at Munich Airport, Terminal 2
Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 13, 2017 02:15 PM
Code review, reports, NoSQL, BCE, Async and State -- or 44th airhacks.tv

WebStandards, microservices, reports, dealing with state in asynchronous JAX-RS, interactive code reviews, NoSQL,BCE, or 44th airhacks.tv is available:

Any questions left? Ask now: https://gist.github.com/AdamBien/53ea02999adaa8c328af43c01583aa68 and get the answers at the next airhacks.tv.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 10, 2017 07:51 AM
Reuse, Tech Impact, Microservices, WebStandards -- a JavaONE 2017 interview

During JavaONE 2017 I was interviewed in the Developer Lounge about reuse, technology impact, microservices, my sessions and Java EE:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 08, 2017 09:54 AM
Unskippable Maven Tests

The following maven plugin configuration introduces "unskippable" unit tests:

    
<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
            <skipTests>false</skipTests>
        </configuration>
    </plugin>
</plugins>
</build>


Even with the mvn clean install -DskipTests system property, all unit tests are still going to be executed.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 07, 2017 09:32 AM
Using Chrome Developer Tools as an IDE / Editor

The Chrome's Developer Tools can be not only used to inspect the DOM, CSS and JavaScript, but also as an IDE / editor with write access to local project files:

See you at Single Page Applications (SPAs) -- the "no frameworks, no migrations" approach, at Munich Airport, Terminal 2 or webstandards.training (online).


Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 06, 2017 08:56 AM
HTML 5 Progressbars, Code Reviews, JAXB deprecation, Virtual DOM speed, Java SE Release and EE4j, EJB Timers in Cluster or 44th airhacks.tv

Topics for the 44th airhacks.tv (http://www.ustream.tv/channel/adambien) show 6th November, 2017 CET:

  1. JavaONE talk: Java EE heavyweight or lightweight Mythbusters and the comparison to Spring
  2. How to build a progressbar with HTML 5
  3. JAXB deprecation in Java9
  4. Virtual DOM, vs createElement, vs (...) performance
  5. Reference Implementations of EE4J
  6. Issue with org.eclipse.ee vs. javax.*
  7. Impact of Java SE release strategy to EE4j or JavaEE
  8. EJB Timer synchronization in cluster
  9. DB Views vs. JPA for reports?
  10. Architectural considerations with REST and Redis
  11. Critique of the "Roller blogger engine" Java EE clone
  12. Accessing SFSB from SLSB
  13. SFSB and scalability
  14. State and async JAX-RS

Ask questions during the show via twitter mentioning me: http://twitter.com/AdamBien (@AdamBien) or using the hashtag: #airhacks. You can join the Q&A session live each first Monday of month, 6 P.M at airhacks.tv or http://www.ustream.tv/channel/adambien

See you at Java EE 8 on Java 9, at Munich Airport, Terminal 2


Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 05, 2017 03:02 PM
A Conversation with Sebastian Daschner about CQRS, Java EE, EE4J, JavaONE

A conversation with Sebastian Daschner about Java EE, EE4J, JavaONE 2017, Microprofile, CQRS, JAX-RS analyzer and his: "Architecting Modern Java EE Applications book (amazon link)"

Subscribe to airhacks.fm podcast via: RSS iTunes or listen now.

See you at Java EE 8 on Java 9, at Munich Airport, Terminal 2


Real World Java EE Workshops [Airport Munich]>

Adam Bien - November 01, 2017 05:14 AM
System.Logger--the minimalistic logging interface in Java 9

Java 9 comes with a minimal logging interface: System.Logger with default implementation returned by System#getLogger:


@Test
public void log() {
    System.Logger LOG = System.getLogger(LoggerTest.class.getName());
    System.out.println("Default System.Logger implementation: " + LOG.getClass().getName());
    LOG.log(System.Logger.Level.INFO, "hello java 9 logging");
}

output:

    Default System.Logger implementation: sun.util.logging.internal.LoggingProviderImpl$JULWrapper
    Nov 01, 2017 5:56:46 AM com.airhacks.logging.LoggerTest log
    INFO: hello java 9 logging

See you at Java EE 8 on Java 9, at Munich Airport, Terminal 2
Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 31, 2017 10:14 AM
Java EE 8: Sending asynchronous CDI 2.0 events with ManagedExecutorService

Java EE 8 with CDI 2.0 introduced asynchronous CDI Events. The Event interface was extended with the fireAsync method and an optional NotificationOptions parameter.

Now you can send events asynchronously, also using the injected ManagedExecutorService instance:


import java.time.LocalTime;
import java.util.concurrent.CompletionStage;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.enterprise.concurrent.ManagedExecutorService;
import javax.enterprise.event.Event;
import javax.enterprise.event.NotificationOptions;
import javax.inject.Inject;

@Startup
@Singleton
public class EventSource {

    @Inject
    Event<String> fireAlarm;
    
    @Resource
    ManagedExecutorService threadPool;

    @Schedule(second = "*/5", minute = "*", hour = "*")
    public void send() {
        String event = "fire " + System.currentTimeMillis();
        CompletionStage<String> completion = this.fireAlarm.
        fireAsync(event, NotificationOptions.ofExecutor(threadPool)); // returns immediately
        completion.thenAccept(this::eventDelivered);
    }

    void eventDelivered(String event) {
        //...receipt after delivery
    }
}
Asynchronous events are received with the @ObservesAsync annotation:


import java.time.LocalTime;
import javax.enterprise.event.ObservesAsync;

public class EventSink {

    public void onFireNotification(@ObservesAsync String event) {
       //...
    }

}

See you at Java EE 8 on Java 9, at Munich Airport, Terminal 2


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 29, 2017 05:31 PM
Updating JsonObjects with JSON-P 1.1 and Java EE 8

Java EE 8 with JSON-P 1.1 ("JavaTM API for JSON Processing", JSR-374) introduced an overloaded Json#createObjectBuilder(JsonObject input) method which uses the JsonObject to set the initial state of the builder.

The pre-initialialization significantly simplifies updates:


import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
//...
            
@Test
public void jsonObjectUpdate() {
    String key = "update";
    String JAVA_EE_8 = "is easy with Java EE 8";

    JsonObject initial = Json.createObjectBuilder().
            add(key, "was hard in Java EE 7").
            build();

    JsonObject updated = Json.createObjectBuilder(initial).
            add(key, JAVA_EE_8).
            build();

    assertThat(updated.getString(key), is(JAVA_EE_8));
    assertThat(updated.size(), is(1));
}    

See you at Java EE 8 on Java 9 workshop, at Munich Airport, Terminal 2
Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 27, 2017 08:50 AM
HTML 5 form validation, processing and styling -- no frameworks, no migrations

Form validation, styling and data processing with plain HTML 5, CSS 3 and ES6 -- without any additional frameworks:

See you at Single Page Applications (SPAs) -- the "no frameworks, no migrations" approach, at Munich Airport, Terminal 2 or webstandards.training (online).


Real World Java EE Workshops [Airport Munich]>

APIDesign - Blogs - October 24, 2017 01:53 PM
Apache HTML/Java API 1.5 has been released!

Hear the news! As of Oct 23, 2017, there is a release of ApacheNetBeans subproject: HTML/Java API. Hooray NetBeans continues to move on the Apache path! Next target? Apache NetBeans Platform...

--JaroslavTulach 13:53, 24 October 2017 (UTC)

Adam Bien - October 23, 2017 01:14 PM
Responsive Web Design with Media Queries and FlexBox Layout

Using media queries with Flex Box to implement Responsive Layout (...in 3min and 25 seconds):

See you at Web Apps -- the "no frameworks, no migrations" approach, at Munich Airport, Terminal 2 or webstandards.training (online).


Real World Java EE Workshops [Airport Munich]>

DukeScript - October 23, 2017 06:50 AM
Transpile Java vol. 2 - Debugging

It has already been described that DukeScript makes it quite easy to transpile Java into JavaScript. Today’s post is going to show the easiest way to debug when behavior of your code diverges between classical desktop Java and Java running in the browser.

Start from command line

While knowing there is a visual way of getting started, let’s again stick with old good command line. Install Java, install Maven and invoke:

$ mvn archetype:generate \
  -DarchetypeGroupId=com.dukescript.archetype \
  -DarchetypeArtifactId=knockout4j-archetype \
  -DarchetypeVersion=0.17 \
  -Dwebpath=client-web \
  -DgroupId=org.your.test \
  -DartifactId=runjavainbrowser \
  -Dversion=1.0-SNAPSHOT
$ cd runjavainbrowser
$ mvn install -DskipTests

and that is it! Just three shell commands and you have all the environment you need!

Test Your Code!

Follow the advice of the previous article to write your code into DataModel.java class, if you want, but as our main focus is on finding the problems, let’s do something else. Locate IntegrationTest.java and let’s add there the Java code we are about to check for misbehaving:

$ vi client-web/src/test/java/org/your/test/IntegrationTest.java

there is already a @Test method present, so let’s write another one:

@Test
    public void stringBehavior() {
      String res = String.format("A%dB%sC", 54.3, "Hi");
      assertEquals("A54BHiC", res);
    }

to test the behavior of String.format (which is known to be slightly less optimally implemented in Bck2Brwsr virtual machine). After saving the file it is time to run the code:

$ mvn -f client-web/pom.xml package

That is it! The system executes your stringBehavior test in classical Java HotSpot VM, and in Bck2Brwsr VM, compares the results and fails. Fails as the HotSpot VM throws an IllegalFormatConversion exception, while Bck2Brwsr produces some string output.

Report a Bug

If you have such failing test, it is time to report a bug. Either use DukeScript forum or premium support or report the bug directly to Bck2Brwsr issue tracker. Attach the test case you have written, so the failure can be easily reproduced.

Simplify your Code

While waiting for resolution of the bug, it may be reasonable to simplify your code to use constructs fully supported by all VMs you are about to target. For example by rewriting the @Test code to:

@Test
    public void stringBehavior() {
      String res = "A" + 54.3 + "B" + "Hi" + "C";
      assertEquals("A54.3BHiC", res);
    }

and running mvn -f client-web/ package again one gets code that is behaving the same in HotSpot as well as in Bck2Brwsr VM.

Improve Java in the Browser!

Enjoy transpiling of Java for a browser and help the system get better by writing more @Test examples and sharing them (the failing ones) with other DukeScripters!

Long live transpiled Java code!

Adam Bien - October 19, 2017 06:13 PM
Deploying, Starting and Scaling a Java EE 7 Payara "Full" Server on OpenShift

Deploying, starting and scaling a Java EE 7 Payara Server Full on CentOS 7, openJDK 8 with the ping healtcheck from Docker hub to openshift in 3:39mins:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 18, 2017 02:34 PM
"JavaONE" - first podcast episode is available at: airhacks.fm

The airhacks.fm podcast with "JavaONE" 11 mins episode is available.

Subscribe with iTunes or RSS. Hear you soon!


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 17, 2017 03:50 AM
What is a polyfill?

In the WebStandards igniter workshop I didn't rely on any external library or framework and focussed on web standards only.

Older browsers may not support recent APIs and may require "patching", also known as polyfills. In these 2:20 mins screencast I implement, install and use an imaginary log polyfill:

See you at Java EE Workshops at Munich Airport, Terminal 2 especially at Web (Standards) Apps Essentials


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 16, 2017 04:26 AM
FDK, FN project, JSF, JSON or 43rd airhacks.tv is available

JavaONE 2017, FDK, fn project, EE4J, Java 18.3, and following topics were covered at the 43rd airhacks.tv:

Any questions left? Ask now: gist.github.com/AdamBien/a232908944dd0b3cad4d0b321fa6ee27 and see in at November, 6th, 6pm CET.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 13, 2017 07:18 AM
JavaONE 2017: Bloat Removal With Microservices

Microservices are Thin WARs usually exposed via HTTP / JSON / WebSockets. By taking the architectural constraints into account allows us to remove a significant amount of bloat and indirections:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 12, 2017 05:22 AM
Simplest Possible Java EE 8 Kickstarter

The 0.0.2 version of the javaee8-essentials-archetype:

mvn archetype:generate -DarchetypeGroupId=com.airhacks -DarchetypeArtifactId=javaee8-essentials-archetype -DarchetypeVersion=0.0.2

creates a ready to use 3.5kB Thin WAR project with configured JAX-RS runtime, a resource with a GET endpoint ("/ping"), GlassFish v5 Dockerfile and a shell script which executes the maven and Docker build image and eventually starts the image. The build-and-run cycle takes about ...5 seconds.

See it in action:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 11, 2017 06:36 AM
Java EE 8: Convenient JsonArray Collector

Java EE 8 with JSON-P 1.1 introduces a java.util.stream.Collector implementation which converts a Collection<JsonObject> into a JsonArray instance:



import java.util.Arrays;
import java.util.List;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.stream.JsonCollectors;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Before;
import org.junit.Test;

public class JSONPTest {

    private List<JsonObject> list;
        
    @Before
    public void init() {
        this.list = Arrays.asList(next(), next());
    }

    public JsonObject next() {
        return Json.createObjectBuilder().
                add("number", System.currentTimeMillis()).
                build();
    }                
    
    @Test
    public void jsonArrayCollector() {
        JsonArray array = this.list.
                stream().
                collect(JsonCollectors.toJsonArray());
        assertThat(array.size(), is(list.size()));
    }
        

In Java EE 7 you would have to either write a custom collector or use a JsonArrayBuilder for the conversion:



        @Test
        public void toJsonArrayConversion() {
            JsonArrayBuilder builder = Json.createArrayBuilder();
            this.list.forEach(builder::add);
            JsonArray array = builder.build();
            assertThat(array.size(), is(list.size()));
        }    
See you at Java EE Workshops at Munich Airport, Terminal 2 and especially at Java EE 8 on Java 9. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Java Evangelist John Yeary - October 10, 2017 01:42 PM
JAX-RS 2.0 Tip of the Day: Using MOXy and Forms Example on GlassFish 5.0

Glass Fish
I have been tasked with doing some JAX-RS coding during my day job. I wanted to update my skills for JAX-RS which is one of my favorite technologies. I specifically use Jersey which I find very well done and easy to use. As a number of you may know... I am a GlassFish fan too (one just needs to look at my banner). I decided to use my trusty NetBeans 8.2 install to write a quick example.

MOXy is enabled by default if you add the dependency to your Maven project.


This is a great feature, and I wanted to give it a spin instead of using Jackson, or Jettison. The usage was as simple as adding a @XmlRootElement annotation to the model class. The rest was handled automagically.

The entire project including a war file are available on Github: jaxrs-form-data-parameters.

A simple platform independent file is used to setup the application.


We set up web resource (service) to handle our requests.


That's it! You now have a JAX-RS Web Service. The project runs successfully on GlassFish 5.0 (.war file on GitHub).

NOTE: MOXy has some issues running on GlassFish 4.1, 4.1.1, and 4.2.

Adam Bien - October 10, 2017 05:57 AM
Java EE: Heavyweight or Lightweight? A Continuous Measurement Session from JavaONE

Are Java EE 7 "full profile" application servers lightweight or heavyweight compared to a "hello world" Java SE nano service? In this session we try to answer the question in a Continuous Measurement / Continuous Profiling style:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.
Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 09, 2017 07:28 AM
JavaONE 2017 News, SSO, Serverside vs. Client, Testing JAX-RS, Logging, Versioning, Overengineering or 43rd airhacks.tv

Questions for the 43rd airhacks.tv:

  1. JavaONE 2017 News: keynotes, impressions, EE4J, project FN, Java 18.3
  2. Dynamic JMS listeners
  3. SSO, timeout and JWT
  4. Serverside rendering vs JavaScript UI
  5. openJDK vs. Oracle JDK in Docker
  6. User properties and Keycloak
  7. Testing JAX-RS with Keycloak
  8. 2 EARs one EJB jar problem
  9. Java EE and logging
  10. JSF conversations with architects
  11. Java EE versioning strategies
  12. User-friendly URIs in MVC / Ozark
  13. Optimistic and pessimistic locking
  14. Ideas for overengineering Pet Projects
  15. WildFly Datasource configuration in Docker
  16. @RequestScope with @Suspended
  17. Implementing a batch job
  18. POJO and JsonObject serialization in Java EE
  19. Qualifier instantiation in Java EE
  20. JPA-level security
  21. bind vs. self / this in JavaScript

Ask questions during the show via twitter mentioning me: http://twitter.com/AdamBien (@AdamBien) or using the hashtag: #airhacks. You can join the Q&A session live each first Monday of month, 6 P.M at airhacks.tv or http://www.ustream.tv/channel/adambien


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 08, 2017 03:49 AM
Introducing the Java Function Developer Kit / fnproject.io

The opensource project fnproject.io is a "serverless", multi-language cloud-like environment which was introduced at JavaONE 2017.

In this 6 min screencast I create a Maven 3, dependency-less, plain Java SE project from scratch, create a Java class with a single method (aka "the function") and deploy it to the fnproject.io ("local cloud") using the Java Function Developer Kit (FDK) / Java runtime:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


Real World Java EE Workshops [Airport Munich]>

Adam Bien - October 07, 2017 04:05 PM
JavaONE 2017: Java People Faces (JPF) 2017.10 -- LIghtening Interviews

A series of lightening interviews with "Java People" at JavaONE 2017 in San Francisco:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


Real World Java EE Workshops [Airport Munich]>