eclipse oxygen (4.7) for the mac

eclipse.org went with a mountain peaks as the website theme for the release of Oxygen. I like it; lower Oxygen concentration when hiking at that altitude. And unlike the neon lights, it wasn’t distracting.

The matrix comparing the packages is still clear. The Java version is a subset of the Java EE version. I chose the later since it has the JavaScript tools built in. This year the list of Eclipse packages has JRebel as the second choice (sponsored package) instead of Bluemix. I saw a Bluemix ad for running Eclipse in the cloud so IBM is still paying as well.

Installing

I like to download and install a fresh Eclipse so I don’t have random plugins I’ve tried throughout the year. An in place upgrade is an option from Neon to Oxygen though. (it wasn’t a choice from Mars to Neon because of an architectural change). Unlike Neon, it was just a drag to install rather than an installer. Which means I can have both Neon and Oxygen installed at the same time.

When opening my workspace with Oxygen, I got this error:


eclipse.buildId=4.7.0.I20170612-0950

java.version=9-ea

java.vendor=Oracle Corporation

BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US

Framework arguments:  -product org.eclipse.epp.package.jee.product -keyring /Users/nyjeanne/.eclipse_keyring

Command-line arguments:  -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.jee.product -keyring /Users/nyjeanne/.eclipse_keyring

!ENTRY org.eclipse.osgi 4 0 2017-07-01 14:38:33.909

!MESSAGE Application error

!STACK 1

org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct

The cause was that I have Java 9 early access JDK on my machine. I tried adding these two lines to the

/Applications/Eclipse.app/Contents/Eclipse/eclipse.ini and then Eclipse launched cleanly.


-vm

/Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Home/bin

After installing plugins and restarting Eclipse, this config “got lost” and I had to make it again.

 

Installing the plugins

The significant plugins I chose to re-install are listed in this table. eGit, Buildship (for Gradle), m2e (Maven) and I think EclEmma were already installed without me doing anything.

Plugin Purpose
Eclipse Tomcat Plugin One click launch for recent versions of Tomcat. (This is the successor to Sysdeo and Mongrel)

Problem/resolution

I got an error Unable to read repository at http://tomcatplugin.sf.net/update/content.xml. Received fatal alert: handshake_failure. I got hit by these known issues. I had to do a few things here:

  1. Upgrade my JDK to the latest (8.131)
  2. Change the eclipse.ini to reference it
  3. Download the cryptography jars
  4. Copy into jre/lib/security directory (remember to sudo)cd /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/securitysudo cp <download_path>/*.jar .
  5. Restart Eclipse
EclEmma Code coverage (I’m pretty sure this was already installed and I didn’t need to). I did need to close and re-open the Coverage view in my workspace.

9/3/17 – Confirmed it was already installed. I needed to install clean on a WIndows 10 box so saw it was on there.

SonarLint  I installed SonarLint last year and quickly came to rely on it. It gives you static analysis findings in Eclipse. I also included the SonarLint Java Configuration Helper so it can see the version of Java I am using. (I”m on Java 8 right now so this is redundant at the moment. But I’m ready for when Java 9 comes out.) I stopped installing PMD and FindBugs. I’m using SonarLint instead.
Subversive To access Subversion repositories

Problem/Workaround

Eclipse failed/closed the pop-up when I tried to install a connector. This happened regardless of whether I choose SvnKit or JavaHL I can reproduce the same problem in a clean workspace. There’s no message in the log from that attempt. Others have reported this issue online with the SVN connector, but no resolution yet.

I tried installing Subclipse instead. That worked. I had to re-checkout the projects since they were associated through Subversive originally.

Eclipse Memory Analyzer For finding memory leaks. Unlike last year with Neon, it installed cleanly from Eclipse Marketplace.
Freemarker IDE Freemarker syntax highlighting and macro assistance.

Failed install

Freemarker IDE from JBoss Tools 1.5 says it supports Oxygen. When downloading, I got the error No repository found at http://download.jboss.org/jbosstools/neon/snapshots/builds/jbosstools-freemarker_master/latest/all/repo.

Last year, it was under the JBoss Tool Project. I couldn’t find that this year. Also, last year, I had to use the Mars version because it wasn’t ready on day 1.

I tried opening a .ftl file. I got a popup asking if want to “Show IDE extensions for this file type and let me install them”. There were two choices. The Freemarker IDE 1.5 and RedHat JBoss Developer Studio which doesn’t look free.

Pydev Python plugin/perspective
Contrast To spot potential security issues. See my impressions of the Contrast plugin.
Bytecode Outline I’ve been looking at bytecode a good fit for the book to make sure I understand why things are happening. This plugin makes it easy. I first tried Bytecode Visualizer but install failed. (The website says there were 25 failed installs with the same dependency problem in the last 7 days). After installing Bytecode Outline, I realized this was the one I had installed for Luna anyway.
Pitclipse For mutation testing coverage

Java 9

Since Java 9 comes out (in Sept) after the Eclipse train (in June), there is a page that describes what to do if you want Java 9 support in your IDE. I’m waiting for the official release. For now, I’m good with just using the command line for Java 9. Eclipse Oxygen is going to drop another official release on Java 9 release day with Java 9 support.

What excites me

  1. Sorting breakpoints by creation time is nice when debugging in a web app. I tend to forget about the breakpoints once something is working and then have to figure out which ones I want to keep. Since the answer is “the recent ones” this is nice.
  2. When switching workspaces from within Eclipse, there’s an option to copy your preferences. This is great as my previous scheme was copying the workspace and deleting all the projects. (to keep preferences)
  3. The default option to escape characters when pasting in a String. This isn’t a new feature, but I wasn’t aware of it.
  4. The option to skip an import on organize imports. This is great because now you can skip a class with a common name and get the import for later classes referenced that are in that package.
  5. The new button to see the JUnit stack trace in console view. I used to copy/paste it into a text editor and that is no longer necessary.

What I didn’t like

  1. That all my plugins didn’t work out of the box 🙁

Other interesting features

  1. Being able to open images directly in Eclipse is cool. So now you can see the size and image without leaving the IDE. It doesn’t show the height/width though so limited in value.
  2. The new row in the debugger with the return value of the last method called is cool.
  3. Not new to Eclipse Oxygen, but I learned about formatting line breaks.

deep listening: creating conversational agility

Deep Listening: Creating Conversational Agility
Speaker: Brian Branagan

See the list of all blog posts from the conference

Reasons we don’t listen

  • Want to speak
  • Overwhelmed by details
  • Bored

Statistic: a third of projects fail because of poor communication and ineffective listening

Project failure lingers as a source of agitation even when move on to other projects. Like a low priority background process

Need to improve outcome of conversations to have better outomes. 93% of what we comunicate is from body, emotions in tone of voice/body language. Only 7% is words.

Layers of Deep Listening
Each layer contributes to the layer above it. A shift in one layer changes the others

  1. Our speaking – the actual words. Coordinates actions with other people. Includes opinions, facts, requests, commitments. Types include transactional (ask/tell), positional (advoicate from a role), transformation (share a vision)
  2. Our emotions – expressed in voice and body language. Emotions begin as biological responses to circumstances. This is why sometimes was experiences before know why. Body pattern matches for a similar emotional signature. This makes us upset based on past occurences. Predisposes us for certain kinds of action. Four basic emotions: fear, anger, sad, glad
  3. Our body – generates sensations and energy. Our way of interacting with the world around us. Informs us about threats to our safety. Fight reaction. Helps identify friends/foes and lets us know how to fit in

Conversational agility is moving from “me” to “we”. It’s havig two people who can listen.

Most important thing is to pause and ground yourself – when upset, grounded, etc. Wiggle your toes to feel the ground and relax. Watch your breathing rate.

practical empathy – live blogging from qcon

Practical Empathy: unlocking the superpower
Speaker: Pavneet Singh Saund @pavsaund

See the list of all blog posts from the conference

speaker’s blog: http://codingwithempathy.com

Started by telling the story about the guy who broke the prod database on his first day on the job and how it was poorly handled. Compare with speaker mixing up two elements (physics) – asked how was and was told his boss has done that and suggested to go home/rest/come back next day.

What is Empathy

  • Ability to see world as others see it
  • Ability to understand another’s current feelings
  • Witholding judgement
  • Communicate that understanding back to them

Told story about a team deciding to work more hours where they could. Speaker worked as well to keep up. But exhausted becuase little kids and burden on wife. Impacted family and daughter. Burned out and quit for 6 months while on vacation.

Introspection

  • self-empathy is checking in with your own feelings and needs. Anger is an unfilled need.
  • Mindfulness – non-judgemental awareness of experiences in the present moment. For developers, sometimes a task is hard to start. ex: too big. Taking a few minutes to focus before starting helps. Be more engaged in moment and keep calm
  • Journaling – Writing thoughts and feelings honestly can be healing. Can empty the mind. Agile retrospectives are also a good place for reflection. But that’s for a team. Having a place you can swear provides a safe place to be honest. Also, makes awareness of how much filter own thoughts.

Listening

  • Listening to understand – put aside immediate goals. “Don’t just do something, listen”. As developers, our first reaction is to solve problems.
  • Listen withough judgement – Breathe to calm down. Be curious to learn and avoid irritation/frustration of not understanding
  • Assume good intent – “bad” intent could be misunderstanding or language/translation problems. Retrospective prime directive.
  • Listening to connect – Try to connect situtation to a feeling within you. Be curious to try to get to underlying feelings so can relate and understand

Gaining perspective

  • Challenge comfort zones – seek out diferent perspectives, learn about context
  • Walk a mile in their shoes – sit with the users, understand what they are trying to do. Pair with a tester. Work in customer support

“Empathy is the key to understanding”
“Empathy is a skill. You need to actively practice giving and receiving empathy”
“Empathy is hard”

Can’t have empathy in a culture of blame/shame
Empathy is hard. Takes energy and boundaries.
Empathy is a choice. It is a first step toward making more options available