The day was very popular with queues and full rooms. Here are my notes and some pictures….
10am Meet Apache NetBeans [CON6160]
Geertjan kicked off the day with a brief history and where NetBeans migration to Apache is. You can now download the 4 million lines of code in NetBeans from GitHub. Quick demo on Java9 features in NetBeans from Sven Reimers.
Lots of speakers on NetBeans days and Sean Phillips showed some of his NASA work on James Webb deep space telescope (operator software built on NetBeans platform).
Well done to Georgia Ingham on her debut as a NetBeans day speaker, telling us all about NetBeans UK days.
11am Breaking up the Monolith with Jigsaw: An Architect’s View [CON4400]
Detailed overview on how the module file works in Java9 and an interactive demo on how it can provide reliable configuration and strong encapsulation. It works at package (not individual class) level.
1pm Java Performance Tuning with Free Tools [CON6163]
Showed free system and Java tools.
Showed how thread pool size could impact on performance (54sec to 17 sec in demo app once fixed). Showed again in VisualVM.
Offheap storage can also suffer memory leaks (ie do zip incorrectly, class loader leak, memory mapped file) which do not count towards heap size.
2pm Rapid Development Tools for Java EE 8 [CON3883]
David covered new JavaEE features like sever-sent events (using Concurrency utilities), reactive client (with a nice example to get GitHubProfile), Bean validation on collection of objects and Maps, Java 8 Date/Time API support, new contraints, JSON-B in the standard.
Ivar covered CDI2.0, Java EE security API (1.0) and JPA 2.2. My key takeaways – CDI now supports Java SE, Observer ordering. Security API is new and now offers authentication mechanisms. Identity stories can define authentication. Security context is now standardised with callers replacing users. JPA 2.2 is a maintenance release with @Repeatable to make code cleaner and more readable. Coolest new feature is stream support.
Gaurav showed jeddict in action, generating the full stack after design in Jeddict. The graphical GUI lets you design inside NetBeans, including relationships and 1 to many. The JSON view allows you to map all the entities. Jeddict can also read tables from existing databases.
3pm Rapid Node.js Development with NetBeans [CON5238]
4pm Powerful Lessons from Top Java EE Experts [CON7624]
This session was literally full. The experts talked about their expectations for JavaEE including faster integration and better Community activity. Good Solid release. More consistency and modularity. Spec now complete, lots of implementation to do. Good code now on GitHub. More rapid releases. Hopefully more implementations. Community needs to take a greater role in documentation. Oracle still needs to sort out issues like branding. Eclipse was chosen in preference in choice to Apache (and Linux) as Eclipse made the best presentation. EE4J name discussed. JSF still a very valid solution.
5pm The Art of Feedback [CON3143]
We need feedback to improve. Code reviews basis in software. At HazelCast every code request pull must be reviewed by 2 people. Problem with immediate reaction as negative attack (emotional intelligence). Cognitive dissonance (people strive for internal consistency). Programs become extensions of programmers. We need to make it objective, not subjective and personal. Other effect cognitive bias (illusory superiority).
Who do we deal with these? We need egoless programming. To get there:-
1. Accept you WILL make mistakes.
2. You are NOT your code.
3. Accept no matter much you know, there is always someone who knows more.
4. Don’t rewrite code without consultation.
5. Treat people who know less than you with respect, deference and patience.
6. The only constant in the world is change.
7. The only true authority stems from knowledge not position.
8. Fight for what you believe but gracefully accept defeat.
9. Don’t be “The guy in the room”.
10. Criticise the code, not the people.
Reasons we are still so bad are:-
1. We can’t listen (listen to understand not to reply). Aim for attentive listening or observation listening.
2. Defensiveness. Taking it as critical.
3. Dualistic position Right v. Wrong. Life is not binary.
How to give feedback
1. Understand the context.
2. Choose a good time and place.
3. Never when feeling strong emotions.
4. Don’t get personal.
5. Be humble and respectful.
6. Expect defensiveness anyway.
7. Ask, don’t tell.
8. Be specific
9. Be constructive.
10. Don’t always/never.
11. Positive, negative, positive.
How to receive feedback:-
1. Be open-minded.
2. Prepare for the “Opponent” – The preacher, the cleaner (breaking small rules), cowboy coder (I don’t care), framework hero (use XYZ), the veteran (how it has always be done).
3. Don’t take it personally.
4. Ask questions.
6. Then respond (triage – react, reflect, respond)