What rocks about the Java virtual machine (JVM)?
That’s an easy one, isn’t it? Most people will tell you that the differentiator of Java is its cross-platform nature. Java offers write-once-run-anywhere, which is provided by the virtual machine. That’s not very unique though, a lot of languages and platforms have adopted virtual machines and Java wasn’t even the first. Smalltalk relied on a virtual machine a decade before Java was even invented!
So, what rocks about the Java virtual machine? In short, by now it’s the virtual machine. The JVM is the most complete of any application VM out there: it’s cross-platform, open-source, crazy fast, verifies the bytecode for safety, hosts both statically and dynamically typed languages, provides automatic memory management and it’s tunable at runtime.
The Raspberry PI and Leap Motion hands-on labs at Devoxx 2013 started with a packed room, we even had to fetch additional chairs for people standing in the back. Vinicius and Yara senger explained their super useful embedded devices panel where many sensors and boards can be accessed through easy REST URLs.
Parallelism is the current way towards increased computing power and concurrency has been entrenched in our applications for many years, even if it was just to have an event dispatch thread. To allow for a coherent memory view, processors include memory models where barriers can be used to ensure that writes are visible to other threads or processes.
This is not another Maven rant nor intended as a flame war–we could even think of this as an “anti-rant”, if you like. I didn’t even bother to see how many other dozens of blog posts on this subject have been written. But let’s face it, one of the most commonly ranted-against tools in the Java development industry is Maven. According to recent results in our 2012 Developer Productivity Report (check out our really popular 2013 version too), Maven is the #1 build tool used by developers.
So what is a build tool supposed to do? Basically, it should automate a bunch of processes that developers need to do regularly, removing some of the manual sting from compiling your source code, packaging and running tests on it, etc.
Let’s start by reviewing the top 5 things that a Build Tool should do really, really well…
What rocks about Open-Source and Java
I’ve contributed to and created open-source projects for my entire software career: from GTK+ to Gentoo Linux to OpenLaszlo to RIFE to EigenD … with dozens of other small stops along the way. I consider the open-source mindset and community to be an essential part of software development.
Many thanks for all the reactions on the first part of this blog post series, the Java Compiler. It’s great to see that Java can still generate so much passion and discussion, as you can see by the 140+ comments here:Read more
When I was away from Java to work on the software of the Eigenharp instruments, I had to develop cross-platform real-time audio software with massive data throughput and constant latency. The development was mainly done in C++ with the Juce library and some glue code in CPython. Given the requirements to develop musical performance software, these technology choices were inevitable but they did make me realize how many things I had taken for granted in the Java ecosystem.
But could I think of ten things that make Java rock? It wasn’t too terribly hard to prepare a list of 10 aspects of Java that maybe we take for granted. You’re most certainly aware of all these, but saying them out loud can serve as a nice feel-good moment about your platform of choice when times get tricky during development. Here are my favorie things about Java:
- The Java Compiler
- The Core API
- The Java Memory Model
- High-Performance VM
- Intelligent IDEs
- Profiling Tools
- Backwards Compatibility
- Maturity With Innovation
Let’s now take a look at #1, the Java Compiler, in more detail and we’ll cover the other reasons in follow-up posts.
Releasing your software becomes easy and bulletproof with LiveRebel, but our tool is not just useful for operations. As developers, when you have to create and test applications that use multiple nodes, LiveRebel can speed up your development dramatically as it takes away all the tediousness of deploying an archive across your cluster.
It’s easy to create the artifact that you want to deploy, but after that you’re typically on your own and have to figure out how to transfer the application to the machines where you want to test. That’s just when the frustrating process starts.
I’m a newcomer to the DevOps movement. I only started paying attention when I joined ZeroTurnaround and the LiveRebel development team.
Initially, all I heard about and focused on were the tools and the technology that would allow me to ‘implement DevOps’ and ‘become more productive’. At hindsight, this is exactly the opposite of what I was supposed to do. Local optimums (ie. individually enhanced islands) are the enemy of DevOps as they will most certainly interrupt the global flow of the organization. Adopting Vagrant or Chef are details that are very specific to individual organizations, maybe the best tool for your teams is a whiteboard with post-it notes or maybe it is a fluffy pink llama doll.
When I was at DevOps Days Austin two weeks ago, I wondered why so many of the talks hammered on about the cultural aspect of DevOps, but it was only after reading The Phoenix Project and The Goal that I realized why culture is so important.
Introduction to DevOps, Virtualization and Provisioning
DevOps has become more than just a buzzword among the innovators in software development and IT operations today. It’s as hot a topic as agile was a decade ago. Just like agile, no one was able to really lock down a good enough definition, or figure out the context in which the definition of agile actually existed (at first)…