Java Pub House (general)

We have a great time talking to Matt Topol from Voltron Data on one of his Apache Software Foundation projects called Apache Arrow. It's both a spec and implementation of a columnar data format that is not only efficient, but cross-language compatible. We walk through the scenarios that it covers and how is becoming more and more pivotal for things like ML and LLMs. So come listen to this JPH episode on one of the best and free ways to distribute data and integrate services working on top of that data!

http://www.javapubhouse.com/datadog
We thank DataDogHQ for sponsoring this podcast episode


Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/
 - Apache Arrow Project (https://arrow.apache.org/)
 - Java implementation (https://arrow.apache.org/docs/java/index.html)
 - In-Memory Analytics with Apache Arrow (https://www.oreilly.com/library/view/in-memory-analytics-with/9781801071031/)
 - Matt Topol X (Twitter!) Account (https://twitter.com/zeroshade)
 - 
Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us! 
https://www.twitter.com/javapubhouse

Direct download: JPHE103.mp3
Category:general -- posted at: 8:28pm CDT

Ok, so it's an incredible time to be in the Java Ecosystem, and one of the biggest frameworks out there just dropped their three-point-oh version! That's right! So Spring Boot is not officially 3.0, and it has as a Baseline Java 17! (oohh!!). So we brought in the big guns to talk about what does it mean to Upgrade to Spring Boot 3, and what are the new cool toys we can expect from that upgrade! 

In all, an amazing interview full of great things that are available NOW (so whatcha waiting for! Upgrade!)

http://www.javapubhouse.com/datadog
We thank DataDogHQ for sponsoring this podcast episode


Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

 - Dan Vega's own What's new in Spring Boot 3 (https://www.danvega.dev/newsletter/whats-new-spring-boot-3/)
 - Official Spring Framework 6 Wiki (https://github.com/spring-projects/spring-framework/wiki/What's-New-in-Spring-Framework-6.x)
 - Spring Boot 3, and Spring Framework 6, What's new? (https://www.baeldung.com/spring-boot-3-spring-6-new)
 - Spring Boot 3 goes GA (https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga)
 - Preparing for Spring Boot 3 (https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0)
 - 

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us! 
https://www.twitter.com/javapubhouse

Direct download: JPHE102.mp3
Category:general -- posted at: 10:32pm CDT

Whew! So we took a big break over summer (like Bob said, we were just swamped with work.. oof), but we are BACK! and like always we are ready to explore even deeper Java topics for the professional developer.

This time we set our sights in Apache Kafka, one of the (if not THE) dominant distributed messaging framework / broker. If you have been integrating webservices, you might have been running into message brokers (and applying Enterprise Integration Patterns), well if so, you most likely have run into Kafka. 

We dive into "What does Kafka Solve", into what it is (and isn't), and why you should use it (or not use it), and how it differs from traditionalling Messaging systems.

In all, this is another episode of "Cloud stuff", and, like you know, that's where everything interesting is at! So have a listen! 

http://www.javapubhouse.com/datadog
We thank DataDogHQ for sponsoring this podcast episode


Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Apache Kafka
https://kafka.apache.org/

Kafka Quick Start
https://developer.confluent.io/quickstart/kafka-on-confluent-cloud/

What IS Apache Kafka
https://developer.confluent.io/what-is-apache-kafka/

Apache Kafka Quickstart (With Tim Berglund, Hi!!!)
https://kafka.apache.org/quickstart 

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us! 
https://www.twitter.com/javapubhouse

 

Direct download: JPHE101.mp3
Category:general -- posted at: 1:13am CDT

Yeah! so we have been working with the cloud for a while, terms like K8s, EC2, Route53, BlobData, CLI has been swinged around... and is a little mysterious, and sometimes looks like a black box where you just click buttons, add things, type commands, until it finally something good happens. But if something bad happens, we tend not to have the slightest idea on why!

Never fear, on this episode of PubHouse we start from the very beginning on describing (And dismantling) what the "Cloud" really is... Starting on how we got there, what are the different "components" of most clouds, and how to reason about them.

This way, the next time something unpredictable happens, you will know exactly where to start troubleshooting and how to navigate this space! This is the first episode of a series (probably a series of 2) on Cloud technologies. So if you never been exposed to the cloud and you're curious, or even if you've been working on it but everything sounds mysterious, then dive in!

http://www.javapubhouse.com/datadog


We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Intro to AWS 
https://docs.aws.amazon.com/whitepapers/latest/aws-overview/introduction.html

What is Elastic Load Balancing
https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html

What is Amazon Route 53
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html

EC2 vs ECS vs Lambda
https://www.cloudzero.com/blog/ecs-vs-ec2

Intro to Azure Fundamentals
https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-fundamentals/

Azure Containter Registry
https://azure.microsoft.com/en-us/services/container-registry/#features

Azure Compute
https://azure.microsoft.com/en-us/services/virtual-machines/#overview

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us! 
https://www.twitter.com/javapubhouse

 

Direct download: JPHE100.mp3
Category:general -- posted at: 3:32am CDT

Ok, so is time to talk about something secretive! Like API Passwords, Auth tokens, or keys... these are things that we want to have as a Secret within our microservice. And yeah, adding them into your source code is a big no-no

Here we cover the dos (and dont's) of secret management, what are the benefits and drawbacks of the different solutions and we explore some of our favorite open source (and Cloud tools) for keeping secrets. We answer some important questions on how to effectively store and manage these secrets (the short answer is don't try to do it yourself!), and end up with the list of best practices for it.

If you are building a non-trivial (or interesting) web service, this is a must-listen episode!

http://www.javapubhouse.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/


Language Features

Using AWS Secrets Manager to manage secrets in Spring Boot
https://raymondhlee.wordpress.com/2019/10/11/using-aws-secrets-manager-to-manage-secrets-in-spring-boot-applications/

AWS Secrets Manager
https://aws.amazon.com/secrets-manager/

Spring Cloud AWS
https://cloud.spring.io/spring-cloud-aws/reference/html/

Hashicorp Vault
https://www.vaultproject.io/

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

 

Direct download: JPHE991.mp3
Category:general -- posted at: 3:19pm CDT

So is time to celebrate! We got a new box of toys with the new release of Java! This is also a Long-Term-Support release which means that's usually a "good one" to jump into! Switch Expressions! Helpful Nullpointers, Sealed Classes... there is a TON that's new

And we got the best Doctor in town to walk us through all of them. We're of course talking about Stuart Marks! (AKA Dr. Deprecator). We cover most of the important features from 11 to 17 (there's a ton that was left out, so keep following the links to know more!)


http://www.javapubhouse.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/


Language Features

Pattern Matching for instanceof
https://docs.oracle.com/en/java/javase/16/language/pattern-matching-instanceof-operator.html

Switch Expressions
https://docs.oracle.com/en/java/javase/13/language/switch-expressions.html

Sealed Classes
https://docs.oracle.com/en/java/javase/15/language/sealed-classes-and-interfaces.html

Text Blocks
https://docs.oracle.com/en/java/javase/13/text_blocks/index.html

Debugging Features

Helpful NullPointerExceptions
https://www.baeldung.com/java-14-nullpointerexception

Performance Features

New Garbage Collectors (Shenandoah, ZGC)
https://blogs.oracle.com/javamagazine/post/understanding-the-jdks-new-superfast-garbage-collectors

Unix-Domain Socket Channels
https://openjdk.java.net/jeps/380


Deprecation & Platform evolution

Remove the Nashorn JavaScript Engine (Plug Graal!)
https://openjdk.java.net/jeps/372

Deprecate the Security Manager for Removal and Applets
https://openjdk.java.net/jeps/411

Strongly Encapsulate JDK Internals
https://openjdk.java.net/jeps/403

Warnings for Value-Based Classes
https://openjdk.java.net/jeps/390


Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

 

Direct download: JPHE98.mp3
Category:general -- posted at: 11:41pm CDT

So while Java is the "main" language of the JVM, it is by no means the "only" language. And one of the purely functional programming languages is getting a new facelift!

Scala has been going through a revamp on the syntax and the features, and if you ever run into a scala user you know how passionate they are about their language! (hint: they love it!)

So while we might be working in Java projects most of our time, it is a good time to revisit that developer toolbox and learn when and where to use it. And if anything else, having a dip into a fully functional programming language teaches any budding developer how to see things differently!

So maybe Scala is "not" the language you want to program all your new projects, but understanding its strengs, its thinking (and with Scala 3) and its purpose, it makes it for a very sharp tool to have at the ready when you really need to tackle that Data Sciency / Functional Programming problem.

In addition, we bring one of the biggest names in the Scala Community to walk us through it all @DeanWampler (https://twitter.com/deanwampler) has been working with Scala since the early days and has just published his new O'Reilly book Programming Scala (https://deanwampler.github.io/books/programmingscala.html). So what are you waiting for, add a new tool to your toolbox with Scala 3.0!


http://www.javapubhouse.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Programming Scala (Dean Wampler)
https://deanwampler.github.io/books/programmingscala.html

New In Scala 3
https://docs.scala-lang.org/scala3/new-in-scala3.html

Scala 3 Features
https://docs.scala-lang.org/scala3/book/scala-features.html

A look at inline
https://medium.com/scala-3/scala-3-a-look-at-inline-and-programming-scala-is-now-published-9690ca43c23a

Safer Pattern Matching with Matchable
https://medium.com/scala-3/scala-3-safer-pattern-matching-with-matchable-f0396430ded6

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

 

Direct download: JPHE97.mp3
Category:general -- posted at: 9:24pm CDT

You'll run it everywhere there's a production system. Some kind of Metrics collector like Statsd or InfluxDB. They work like magic, reporting on the health of your application. but how does it really happen?

We dive in on how these Application Performance Management tools work and how do they really "see into" your application. We demistify all this magic, and actually describe how to add "new" metrics and how to publish it!

If you ever worked in a production application, and were wondering how do these metrics get graphed and collected, well, wonder-no-more! We go deep into Micrometer (the SLF4J of Metrics) and how it all works!

http://www.javaoffheap.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Micrometer
https://micrometer.io/

Creating Meters
https://micrometer.io/docs/concepts#_meters

Spring Boot and Micrometer
https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector

Statsd
https://github.com/statsd/statsd

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

 

Direct download: JPHE96.mp3
Category:general -- posted at: 10:40am CDT

So we had a previous episode where we show a party trick with GraalVM, where we saw how to create a Native Image. It was really the "hello world" of Native image creation, so Bob decided that's not good enough!

In this epidose we dive a little deeper on how to actually run your Restful Web service (or other app) natively, going through the exercise of debugging GraalVM builds including adding Maven plugins, finding out how to quelch the different reflection errors and how to deal with resources (and those pesky JNI / so libs).

In all, this is more of actually a practical use of GraalVM, not just a "it can do it", but more, how is it done. So want ludicruos startup speed and performance? then press play and listen!


http://www.javaoffheap.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

GraalVM Native Image Options
https://www.graalvm.org/reference-manual/native-image/Options/

Maven GraalVM Native Image Plugin
https://www.graalvm.org/reference-manual/native-image/NativeImageMavenPlugin/

Apache HttpComponents
http://hc.apache.org/

https://www.graalvm.org/docs/getting-started/linux/

GraalVM Resources
https://www.graalvm.org/reference-manual/native-image/Resources/

Build Configuration
https://www.graalvm.org/reference-manual/native-image/BuildConfiguration/

GraalVM Example Code
https://github.com/bobpaulin/javapubhouse-graal-episode/
https://github.com/bobpaulin/opencv-1/tree/feature/add-native-image

GraalVM Native Image InvalidAlgorithmParameterException
https://github.com/oracle/graal/issues/768

 

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

 

 

Direct download: JPHE95.mp3
Category:general -- posted at: 4:49pm CDT

So it happens. Sometimes a Java program just "dies" with the dreaded Out-of-memory Exception. Sometimes, it leaves behind a "heap dump", or a copy of what the Java program had in memory when just before it throw the Out-of-memory exception. For some devs, a heap dump is stressful, because they think is a black box with only mysteries, but we are here to calm your fears!

In this episode we show how Heap dumps are your friends! If you happen to have one, then is almost assured that you can find what caused the out-of-memory, and/or you can "see" what the real values of configuration were. For troubleshooting a production incident, a heap dump becomes invaluable since "nothing" hides from it. Doesn't matter where the code came from, a heap dump will have exactly what each variable was holding and who might be responsible for a memory leak!

"Memory leak you say? I thought java didn't have memory leaks!". Well, that's the other part of this episode where we discuss while Java has way less worries than (say c++) on allocating and deallocating memory, you can still create Memory leaks by having strong referenced objects that are never removed (and if that sounded like mumbo jumbo, even a better excuse to listen to this episode)

So, we survived 2020. Take a listen to this end-of-the-year episode, and be even more ready for whatever 2021 throws at us!


http://www.javaoffheap.com/datadog


We thank DataDogHQ for sponsoring this podcast episode

Don't forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

 

How to capture a Heap Dump
https://www.baeldung.com/java-heap-dump-capture

Eclipse Memory Analyzer
https://www.eclipse.org/mat/


VisualVM
https://visualvm.github.io/

 

 


Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

 

 

Direct download: JPHE94_mixdown.mp3
Category:general -- posted at: 2:23pm CDT

We're back! and now we move to the new-fangled serialization and deserialization frameworks, starting with Protobufs! Google's contribution to the serialization space, Protobuf V3 makes it easy to create a very efficient on-the-wire serialized representation of objects, and then some. With the ability to have both backwards and forward compatible changes, protobufs is a great choice for transmitting information across services.

But not to be outdone, @BobPaulin goes in and covers Thrift, which goes a step beyond than just serializing messages, but also takes care of the "Transport layer", adding the ability of doing Remote-procedure-calls! Imagine if instead of saying "I need to send a message to that service, and then the service can process it and send info back", you just said. "I want to call a method on that service with this parameters and get the results". Thrift exposes that functionality by letting you have an interface that you can just call in your client service, and it "magically" coordinates all the gnarly stuff to encode, transmit, execute, decode, and present your call. You don't even have to think (too deeply) about how it all happens. As long as you define your thrift objects, thrift methods, and Thrift transport, the framework will let you just think of methods to call! that's it!

So in all, a very fun episode where we discover what the new types of serialization frameworks are up to. If you ever had to create a message, or ever had to annotate an object as Serializable, then do take a listen to this episode!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

 

We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE93_mixdown.mp3
Category:general -- posted at: 3:20pm CDT

Ah, Serialization... the bane of every Java Developer! If you are still using ObjectOutputStream, and Serializable, then you do want to listen to this episode! We move past the objectoutputstreams to what most people are running into these days! (Starting with 2001 and JaxB... and then moving forward from there to Json, and in Part 2...protobuf and thrift!).

But oh, no all serialization is equal, and there are tradeoffs are we go through the different serialization / deserialization libraries (Convenience, Speed, Rigor? all these are things that one need to take into account when choosing a serialization strategy). So take a listen (and watch the video if you want to follow along) as we explore the interesting and great world of Java serialization frameworks!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

 

We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE92_mixdown.mp3
Category:general -- posted at: 12:55am CDT

So just in case you didn't know, but being a Java developer is as fun as ever! The ecosystem has been changing from the past year, and today, we have "tons" of Java Developer Kits to choose from. Want to know what happened? And want to know how different they are? (or what do they bring to the table), then tune in!

In this episode we cover the history of OpenJDK, and uncover the reason of why there are many JDKs out there. We dive in some of the licensing terms (hint. If you are using Oracle JDK 8, make sure you are getting security updates on with a support plan!).

Then Bob dives into some very fun differences between OpenJDK, Azul, and OpenJ9... and the tool to "keep sane" with all these installations, SDKMan! So if you do Java development for a living (and even if you are a hobbyist) this episode explains all the different Java versions you can play with!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

 

We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE91_mixdown.mp3
Category:general -- posted at: 10:12pm CDT

Java 14 is out! And with it, we now have a preview of Java Records! We go over this newfangled feature... and get this... we finally did it! We actually recorded our first Video Podcast (Woohoo!). A great episode Number as well (episode 90) to start the road to Video (I know, I know, very 2005 of us), but now you can not only listen to our voices, but actually look at the code as we type so you can follow along!

So yeah, with records, we are essentially incorporating (almost natively) what some of Lombok's @Data features were, including default (sensible) implementations of equals and hashcode. A great episode to not only listen... but to watch! Let us know any feedback you have as we embark into Video (you know where to find us)

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

We thank DataDogHQ for sponsoring this podcast episode and providing our Guest Speaker!

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE90.mp4
Category:general -- posted at: 12:02am CDT

You heard it going around, everybody is talking about Kubernetes, and Minikube, when using Docker, and CLI. It's like a foreign language! While we know Java very well, with the advent of Devops, we are supposed to be Deployers, and Scalability Experts. Well, once you start going down this episode you'll become the DevOps Hero your company was waiting for!

Kubernetes is interesting because is a technology that matured almost in tandem with Docker. But Kubernetes is not Docker...Instead Kubernetes manages Docker Containers (among other things). So if you've been wondering what exactly it is? and were afraid (or just didn't know where to start), well, fear no more! We'll unveil all the Kubernetes mysteries

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!



We thank DataDogHQ for sponsoring this podcast episode and providing our Guest Speaker!

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE89_mixdown.mp3
Category:general -- posted at: 11:34pm CDT

One of the first things that you learn to appreciate when you transition programming from hobby to a way of life is to find a good way to troubleshoot problems. Most of the time this means logging and monitoring, so for this episode we decided to interview Renaud Boutet who is DataDog's VP of Product Manager, and don't worry, he's really a developer that went to the "Management" (i.e. dark) side, so he knows what he's talking about!

Diving into topics from Logging Frameworks, to MDC, to a discussion of the three pillars of observability (Metrics, Traces, and Logs), this episode have good advice for everyone. From your first System.out.println ("I'm here") to your slf4j with MDC setup, you'll sure learn new tips and tricks!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!



We thank DataDogHQ for sponsoring this podcast episode and providing our Guest Speaker!

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE88_mixdown.mp3
Category:general -- posted at: 12:28am CDT

It's that Streaming-new-deal that has been taken over the web world, Reactive! You've heard about it, and maybe even tried to learn it a couple of times but find it confusing? Well, be confused no more since on this episode Bob and I explore the basic foundations of Reactive (and explain what is that makes is so confusing to begin with)

But that's not all. We also dive on why is such a "hot" technology and why is the recommended approach on new microservices, even so, we also explore its drawbacks and why we shouldn't rip everything apart to make "reactive" things.

Lastly we start exploring one of the "reactive" frameworks with Spring WebFlux, and explore how to "think" about Reactive (and came with the marble track analogy). In all, this episode will shed light on a topic that has been hard to understand, but on which, if done correctly can bring a very large performance gain!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

 

We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE87-Complete_mixdown.mp3
Category:general -- posted at: 12:44am CDT

Oh my! This episode is going to be one of our favorites. There are times where the Java ecosystem delivers something incredibly interesting (InvokeDynamic, Lambdas, Streams, Kotlin), and this episode is one of those! You may have heard it mentioned around the interwebs or conferences (this new GraalVM thing)... well, it's here to stay and is propelling JVM languages to a whole new level of interoperatibility and performance!

So GraalVM at the very high-level view is a "Java Virtual Machine" (in reality there's much more to it, but we can at least start there). It provides tons of interesting features, like the ability to not only compile Java/JVM languages, but also Javascript, LLVM Languages (like C++), Python, R (and is expanding to others), and more importantly, interoperatibility between all these languages.

But the bee's knees (or the most interesting fact) is that GraalVM also have the "Native Image", which allows you to completely bake in a Linux (more platforms coming) binary straight up from your source code. The Native Image doesn't require Java to be installed, and you can start your application as you would any other Linux executable. The most impressive part? Startup times are incredibly fast!

So we have usually addressed tons of misinformed myths of the Java language like "It's slow:" (No, not really), or "You can code more performant code in C++" (possibly, but you have to be an expert to squeeze more performance than the JVM's JIT compiler). But one area that the claim has held true is that "Java has slow startup times". And (it used to be) true! Because of the dynamic classloading that Java supports, it's very hard for the JVM to startup fast. For long running applications this is usually not a problem, even so, for the new Cloud folks (and Lambdas, and AutoScaling Groups), fast startup time is a "thing". And so, with GraalVM (with some caveats) we are conquering one of the last arguments against the JVM languages.

In all, THIS is the episode to listen this year. It's exciting, new technology that we could really spin up and use. Let's have fun programming again with GraalVM.

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!


We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo


Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE86_mixdown.mp3
Category:general -- posted at: 8:18pm CDT

There are technologies that sometimes are forgotten in a lonely corner, but that actually are quite sturdy. One of these is the All-Powerful Java Management Extensions (also known as JMX). With JMX you can actually expose a lot of metrics of your application and TONS of libraries use it "out of the box". Libraries like Tomcat, JVM, ActiveMQ, Spring (and ton others) exposes their metrics through JMX. And you can too!

In this episode we go over how to both consume JMX metrics (through JConsole, or statsD, or other Performance Monitoring Tools), and how to produce them as well (By creating your own MBeans), not only that, but we also go with how to be able to "invoke" these on a live application. Have you ever wanted to say "Oh my, I wish I could call this method while the program is running in production 'At will'". Well, with MBeans, you can make that happen! Not only that, but if you really want to you can also expose your MBeans through a Rest Endpoint with Jolokia.

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!


We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo

We also thank OverOps for sponsoring this podcast episode

 

OverOps Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE85_mixdown.mp3
Category:general -- posted at: 12:19am CDT

So you get that project that needs to connect to a server that doesn't talk rest, or http(s), but has its own protocol (or maybe it DOES talk https but you are looking for incredible performance!). Well, look no further than Netty! Sure, sure, you could really spend time working with NIO.2 and creating your own sockets and all that jazz, but why? The Netty.io folks already did it, and by golly they created a library that's "blazingly fast".

So take a dive into this episode where we talk about the main netty concepts (like pipelines and handlers), and give you a tip or two as you embark down into protocol performance bliss. Netty has seen it all, and has been battle tested for a while now (Have you heard of Jetty? well, that has Netty under the hood), and best of all, we go over how to be "lazy" about it! Netty really implemented a lot of protocols, events, and stuff already (for example LengthFieldBasedFrameDecoder, ProtobufVarInt32FrameDecoder, SslHandler, WebSocket00FrameDecoder and much more!), so you don't have to be the wiser and implement things from scratch... chances are... Netty already has them (or at least will have the right tools to create your own thing).

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!


We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo

We also thank OverOps for sponsoring this podcast episode

 

OverOps Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE84_mixdown.mp3
Category:general -- posted at: 1:51am CDT

You got your new project, it's a brand new service, and is ready to go! But... have you done a health check endpoint for your app? In this day and age of microservices with auto-remediation and auto-scaling, having a well-behaved, functioning health-check is very important since it dictates when to evict, scale up (or down) your service.

And the great news is, that for the "bigger" frameworks (like Spring or Microprofile) the work is almost done for us! With Spring Boot Actuator and Microprofile, we have tons of support and annotations, and built-in healthchecks for the main "things", like database connectivity, Message Queue connectivity, even Email settings!.

So don't put it off...start listening to this podcast, and then start creating that oh-so-needed health check for your app! Also, stay tuned to this episode as we give a "hint" of new podcast series to come!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!


We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo

We also thank OverOps for sponsoring this podcast episode

 

OverOps Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE83_mixdown.mp3
Category:general -- posted at: 10:37pm CDT

So the internet is all raging about this (not so little) framework that is doing it all. Created with a "cloud-first" mentality, @Micronautfw is aiming to be your next Spring Boot! And, oh gosh, how easy they are making it.

We dive into what makes Micronaut such a darling of the internet right now (not using reflection, GraalVM ready, better memory consumption) and see how much "stuff" is in there (the TLDR; A Lot). We go from creating a microservice, to looking at the different already-implemented features like circuit breakers, properties/profiles, beans, support for lambdas, micrometer, reactive programming, and all. While it might not have "everything" that Spring does, the reality is that it's pretty solid.

Would you consider Micronaut for your next project? The answer is maybe (and for some cases, maybe Yes). So come, and take a listen to the underdog framework (Micronaut) that's stepping up to definitively take the reigning Champ (Spring)

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!


We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo

We also thank OverOps for sponsoring this podcast episode

 

OverOps Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE82_mixdown.mp3
Category:general -- posted at: 12:53am CDT

Ah, Project Lombok is one of those little gems in the Java Ecosystem. But it's interestingly controversial! Some will love it (as I do), others will hate it! But no matter which camp you land on, you should at least know about it!

Project Lombok allows you to, quite easily create your equals/hashcode method, or create a builder pattern for your class, or even generate your getters/setters. All while just adding a simple annotation to your class. How does it do it? (hint. It's preprocessing bytecode magic) But holy cow, when used responsibly, Lombok allows you to write so little code for a ton of cases. So come take a look at why this library is powerful (and learn its benefits, and as importantly, its pitfalls)

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

We also have been revamping our site so go there, take a look, listen to old episodes, or search them!



We thank DataDogHQ for sponsoring this podcast episode



Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE81_mixdown.mp3
Category:general -- posted at: 6:59pm CDT

Nothing like a cold chilly day to stay inside and program some more. Before you start that new project from scratch, let's go over a pretty cool feature of Maven. Maven Archetypes! Learn how to create "project templates" for your new maven project... or better yet, use one of the predefined maven archetypes already out there.

We go over how easy is to create your own, and over the flexibility on the things you can do! Are you trying to get all your development teams to start with the same libraries, support, or template? Are you using maven? Then the answer is easy. Create an archetype for them! Come and take a listen as we use Maven to create Maven Template for new Maven projects.

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

We also have been revamping our site so go there, take a look, listen to old episodes, or search them!



We thank DataDogHQ for sponsoring this podcast episode



Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE80_mixdown.mp3
Category:general -- posted at: 2:08am CDT

So for our new episode we decided to give YOU a holiday gift! Apache Commons! We covered one of the libraries that is ubiquotous in anyone who programs Java, but that not many know how robust and complete it is!

Do you have to do things like averages, min, max? Or do you have to read CSV files? What about measuring pieces of code with currentTimeMillis? or creating deep copy of Bean objects? Well, these and much more are already supported in the slew of Apache Commons project (and subprojects!). They usually have no transitive dependencies either so they are "ready" for the taking. And because Apache Commons is already used in many open source libraries, chances are that is already in your own project! Making it an easy thing to just start using it.

Happy holidays, enjoy this little gift from all of us :).

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

We also have been revamping our site so go there, take a look, listen to old episodes, or search them!

We thank DataDogHQ for sponsoring this podcast episode



Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE79_mixdown.mp3
Category:general -- posted at: 7:50pm CDT

OracleCodeOne just happened... and Freddy and Bob couldn't go... So they recruited the help of Josh Juneau to go out there and capture interviews from anyone who would talk to us! Apparently they did, and we packaged all in this hour-long episode for your enjoyment! Everything from community building, to what's hot in the Java space, to takes from the conference are covered in this series of five minute interviews.

So take a listen! It's the next best thing if we couldn't go to OracleCodeOne.

And don't forget to follow JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

Lastly, if you haven't visited us in a while, javapubhouse.com had a new facelift. We made it easier to find episodes, and information about our podcast!

We thank DataDogHQ for sponsoring this podcast episode



Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap


We want to thank

For participating!

Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE78_mixdown.mp3
Category:general -- posted at: 12:51am CDT

So you may have thought about using NoSQL or a Document Database for taking care of you needs. But do you know why that might be not be a good (or a pretty bad idea?). Or you may have a Database that have been running fine, but it seems that you can't work with it anymore? (Is it time to move to NoSql? Would it help?).

We dive into the "Why" would you choose Databases vs NoSQL Data Stores, or when to ditch your MongoDB and actually come back to MySQL. In our current time of "WebScale" and "CloudReady" we get bombarded by choices! (Mongo, Dynamo, MariaDB, ElasticSearch) and while some of the offerings are great, it might not mean that is the Right choice for what we need to store.

So take a listen as we explore normalization and the strength and weaknesses of relational data vs unstructured data.



We thank DataDogHQ for sponsoring this podcast episode



Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE77_mixdown.mp3
Category:general -- posted at: 11:39pm CDT

It's coming! If you have been using Oracle Java 8, you should know that starting on January 2019 we will have to get an oracle license for running Oracle's JDK in production. OR, if you want to keep using Oracle Java (or OpenJDK) for free, and still receive security updates, then you gotta move to 11!

In this episode we have no other than @DrDeprecator itself giving us a tour on what are the less-known changes (and goodies) that are coming when upgrading from 8 to 11. We go through most of the JEPs that usually don't make the news but are actually pretty awesome!

So take a listen, and start downloading the new Java 11!



We thank DataDogHQ for sponsoring this podcast episode



We also thank Stuart Marks a.k.a. Dr Deprecator for joining us in this episode (do follow him!)

Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE76_mixdown.mp3
Category:general -- posted at: 12:11am CDT

While Freddy is travelling from Chicago through the West Coast in a minivan, Bob talked to Todd Ginsberg about the new darling language from the JVM. Kotlin is much more than a novelty now, and with Android support, and some time to "work out the kinks" it has been used Mainstream. Have you been curious on what makes Kotlin interesting, and "fun?". Have you been thinking of taking it for a spin? Well, wait no more! Listen to this episode as Todd takes us through the coolest part of Kotlin!


We thank DataDogHQ for sponsoring this podcast episode



We also thank Todd Ginsberg for joining us in this episode!

Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse

 

Direct download: JPHE75_mixdown.mp3
Category:general -- posted at: 10:55am CDT

In this episode we interview Janine Patterson on her talk of "Integration Test Coverage with JaCoCo" and dive into the nuances of Units vs Integration tests. We dive into Gherkin sentences as we use Cucumber, and challenges of integration tests (hint... use Docker). We also dive into the best way to execute these (Spring Runner). In all, if you were interested in upping your integration testing game, this is the one episode to listen to!
We thank DataDogHQ for sponsoring this podcast episode



We also thank Janine Patterson for joining us in this episode (do follow her!)

Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE74_mixdown.mp3
Category:general -- posted at: 9:50am CDT

Episode 73. Spring Boot 2.0 is out! Hear all about it with Greg Turnquist It's new, it's shiny, and is powerful! The new Spring Boot 2.0 framework is out! And we interviewed Spring's own @gregturn to tell us what's new, what's improved and what has changed in 2.0. Diving into a bunch of topics including Reactive APIs, Bob, Greg and I set to explore Spring Boot 2.0 (and why you should upgrade). @gregturn is also the author of Learning Spring Boot 2.0, and he is an authority on many thing Spring.

This is an episode you don't want to miss!
We thank DataDogHQ for sponsoring this podcast episode



We also thank Greg Turnquist for joining us in this episode (do follow him!)

Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE73_mixdown.mp3
Category:general -- posted at: 5:45pm CDT

We went to one of the best sources to learn what's happening with Var and Java 10, @stuartmarks! Also, what has been (and is being deprecated) on Java 10, and 11. And little inside perspective of having a new java version every six months!

Included is a the "convConvenience Factory Methods for Collections" List.of, Set.of, Map.of that @stuartmarks did for Java 9! (and his new contributions for Java 10). And a interesting trick of the non-deterministic order of unmodifiable sets! (A Stuart Marks special!)

So come and listen to this episode which contains great tips and tricks directly from one of the contributors to the Java Programming Language API!

We thank DataDogHQ for sponsoring this podcast episode



We also thank Stuart Marks (Dr Deprecator) for joining us in this episode (do follow him!)

Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin
Direct download: JPHE72_mixdown.mp3
Category:general -- posted at: 7:59pm CDT

Episode 71. Jigsaw part II, and Java 10 Highlights! So we finally wrapped Jigsaw in this episode (the most prominent feature for Java 9 (and included a small errata from @stuartmarks). But Java is moving at a breakneck speed, and Java 10 was just released a couple of days ago! We couldn't resist covering some of the new and interesting features of the language. So come take a listen to finish up with Jigsaw, and learn what's new for Java 10.


We thank DataDogHQ for sponsoring this podcast episode


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap


Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

 

Direct download: JPHE71_mixdown.mp3
Category:general -- posted at: 11:21pm CDT

It was both the most anticipated and (one of the) most controversial features in Java 9. What's the bruhaha all about? What is Jigsaw (or the Java Platform Module System)? What does it bring? Can I use it? And if so, why would I use it? All these questions are answered as we dive into the history of JSR-376 (it has been years in the making). And since Jigsaw is so big, there might be a two-parter for us! So stay tuned!

We thank DataDogHQ for sponsoring this podcast episode




Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

Direct download: JPHE70_mixdown.mp3
Category:general -- posted at: 6:58pm CDT

So it's the holidays and now we are winding down the year. Even so, sometimes this is the best time to actually do some performance testing. And there's no better (foss) tool to do so than JMeter! Come and let's dive into how to use JMeter for those stress and performance testing that needs to get done (you're doing stress tests right?)


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @fguime and @bobpaulin

Direct download: JPHE69_mixdown.mp3
Category:general -- posted at: 11:40pm CDT

Episode 68. Clouding it up with Microsoft Service Fabric

Clouds are everywhere and are puffy! In this Sponsored Episode, we dive into one of the main prominent cloud providers out there (Microsoft), who is outreaching to us Java Developers! (gasp!). In this episode, the Microsoft Service Fabric team (with @mani_ramaswamy, @HuruliS and Raunak Pandya) takes us in a soup-to-nuts tour on how to get started with Azure's service cloud, including what makes it different from others. Bob and I dive and explore how well would this work for us Java folk (and the answer is "very well") taking questions from how to build and deploy cloud, to what native support is there is for us Java Folk .

We thank Microsoft's Service Fabric team for sponsoring this podcast!


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @javapubhouse and @fguime and @bobpaulin

Direct download: JPHE68_mixdown.mp3
Category:general -- posted at: 6:46pm CDT

We sneaked in! Bob and I managed to get into JavaOne (sshhhh....) and made drive-by interviews with some of the luminaries and notable atendees at JavaOne, from Dr. Deprecator @stuartmarks to @reza_rahnman, @edburns, @prpatel, @saturnism, @javaclimber and @shelajev. All in snippets of 10 minute awesomeness talking from deprecation, collections, Eclipse Enterprise for Java, Containerization, and getting Kids involed, it's a great melting pot of topics and opinions!


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @fguime and @bobpaulin and @javapubhouse

Direct download: JPHE67_mixdown.mp3
Category:general -- posted at: 6:27pm CDT

So we talked about how to create a rest service (using things like Apache CXF and Spring MVC), but sometimes, we actually need to consume these rest services. Luckily within the Java ecosystem there is a lot of way to skin that cat, and in today's episode we at least cover 4 ways of doing so (including my favorite of the day, Feign). Come take a listen as we dive into Appache HttpComponents, Apache CXF with JaxRS, Spring RestTemplate and Netflix Feign on this fully-loaded episode.


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @fguime and @bobpaulin

Direct download: JPHE66_mixdown.mp3
Category:general -- posted at: 7:31pm CDT

What a strange omission, of all the concepts, one that all of us should always have is Caching. We have used it (and most likely we have been burned by it). Come and take a listen on how to correctly (or at least not as incorrectly) think about caching, finding out your "game plan", and using JSR-107, or Hazelcast, or Apache Ignite or Spring. LRU? Time-based? How much memory? Long distribution tails? cacheable keys? All concepts that you should ask before creating/using a cache!


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @fguime and @bobpaulin

Direct download: JPHE65_mixdown.mp3
Category:general -- posted at: 10:05pm CDT

You heard about it, and you are probably using it already. It is the Spring framework that took over the Web (Spring Boot!). But what makes it so special? and what lurks under the covers? How did it became a thing and what is it really trying to accomplish? Come take a listen with our own Pivotal insider, Michael Minella! (@michaelminella


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @fguime and @bobpaulin

Direct download: JPHE64_mixdown.mp3
Category:general -- posted at: 9:10pm CDT

The Java Content Repository (JSR-170 and JSR-283) have been around for a while. For those who don't know it's an actual way of managing content (or assets, or text, or images, or a catalog). Its use can be almost anything, and yet, we didn't know we had it! The best part? It's a JSR so not just that there are different, compatible implementations, but the underlying storage can be changed in a jiffy. Want to store as files in the filesystem, done. How about a Database? also done. How about using something that the cool kids use like Mongo? It Got you covered man! (or Woman!)


Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



And Follow us! @fguime and @bobpaulin

Direct download: JPHE63_mixdown.mp3
Category:general -- posted at: 11:03pm CDT

It's not the "cool kid" anymore, but it sure is everywhere! If you ever generated an xml file from a java class (or have created a java class from a definition) you have been using Jaxb! And if you have used for some time, you can see that Jaxb sometimes works, and other times...well. Come take a listen and understand what's happening under the covers! And how you can make JAXB, oh well, "behave!".





A Big Thanks to LaunchDarkly for sponsoring our podcast! Feature flagging is easy, feature flag management is hard. What LaunchDarkly has done is essentially take a system like Google or Facebook has made in-house and bring this to the masses. With features like percentage rollouts, audit logging, and flag statuses, teams have complete control over features at scale. When you effectively separate business logic from code, you can build better software, faster without the risk

Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!



Direct download: JPHE61_mixdown.mp3
Category:general -- posted at: 9:32am CDT

So you have heard about it, and probably ran into it already. Docker is a super cool tech that let us create / manage and deploy applications (It is really what would come out if Devs and Ops decided to have a kid). Come hear how you can too master the art of Docker, and more importantly why is it so "accepted" and revered.



A Big Thanks to LaunchDarkly for sponsoring our podcast! Feature flagging is easy, feature flag management is hard. What LaunchDarkly has done is essentially take a system like Google or Facebook has made in-house and bring this to the masses. With features like percentage rollouts, audit logging, and flag statuses, teams have complete control over features at scale. When you effectively separate business logic from code, you can build better software, faster without the risk

Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!

Direct download: JPHE60_mixdown_2.mp3
Category:general -- posted at: 12:01am CDT

Yeah, today Streams might seem like old news, but you know what? It's worth revisiting and discovering what we didn't know from before. In this episode, Bob, Michael, and I come back to revisit Streams and share what was good, bad (and evil) of them. Including some great trivia on default implementations (a weird Java 8 feature). If you have started to use streams, but not sure if they make sense, or if you are about to dive into them, take a listen! The perspective is great!

Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!

Direct download: JPHE59_mixdown.mp3
Category:general -- posted at: 1:51pm CDT

So REST is just a webpage that returns JSON right? Well, no! Apparently I've been doing REST All wrong! It's much more rich and complete than what we are led to believe. Come join us with Bob Paulin as we talk what the real deal on REST is (and how to implement REST endpoints in Java) 

Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap


Do you like the episodes? Want more? Help us out! Buy us a beer!

Direct download: JPHE58_mixdownmono.mp3
Category:general -- posted at: 3:55pm CDT

Threadlocal is great! It can help you get out of sticky situations, and give you a great boost of performance and/or isolation. But with great tools comes great responsibility. Threadlocal can also be misused, and create memory leaks, or object corruption, and unknown sharing. So if you ever had seen one and never quite got what it does, or even if you were consider using one. Take a listen! And steer the people in the right way for the use of Threadlocal.

Also, Thanks Michael for pointing the issue with episode 55 and rebasing!

Don't forget to SUBSCRIBE to our cool new NewsCast!

Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!

Direct download: JPHE57.mp3
Category:general -- posted at: 4:56pm CDT

So you heard about sun.misc.unsafe. Even if you are in certain circles you might have heard about that it was (almost) removed from Java 9. And if you were really paying attention you would've heard the cries of every major Java Framework to the news. While it didn't happen (Unsafe is still in Java 9, and possibly in Java 10+), we should dive into why is it so attractive, and creates such a divided opinion (JVM implementers want it gone. Performance nuts want it in)

Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!

Direct download: JPHE56.mp3
Category:general -- posted at: 9:38pm CDT

Source Control, it's one of those tools that professionally we MUST need to master, and even if you are a hobbyist is a great thing to learn. In today's episode we cover one of the "hottest" source control system out there (Git). Created by Linus Torvals, it's quirky and weird when coming from Subversion (or gosh forbid, Visual Sourcesafe). But not to worry, if you have always been wondering about Git, and how it really works (or more importantly, how to use it), this is the episode to listen to!

Don't forget to SUBSCRIBE to our cool new NewsCast! Java Off Heap


Do you like the episodes? Want more? Help us out! Buy us a beer!

Direct download: JPHE55.mp3
Category:general -- posted at: 9:07pm CDT

As a developer, we probably spend most of our time figuring out what went wrong. Debugging really an art, and we sometimes get intimidated by it. Well, if you ever found a bug that has trying to scare you, never fear! Bob and I walk through how to become a master debugger and just Zap those bugs away!

Don't forget to SUBSCRIBE to our NewsCast Java Off Heap






We thank Hazelcast for sponsoring the show! If you need a distributed implementation of the Java collections, no need to look further than Hazelcast!

Follow
Me
on
Twitter! (@fguime) (thanks!)

Man, summer is over! As our side of the earth tilts away from the sun, how about keeping us warm and comfy by sending us a beer?

Direct download: JPHE54.mp3
Category:general -- posted at: 9:29pm CDT

You always hear about it, Spring MVC this, Spring MVC that, wondering what really happens under the hood. Well, wonder no more! In this episode we break up and analyze Spring MVC to the core, so that you know exactly what happens! Taking it from the last episode (JavaEE), we push forward to how modern software development happens today!

Don't forget to SUBSCRIBE to our NewsCast Java Off Heap


We thank Codeship for being a Sponsor of the show! Need Continuous Delivery made simple? Check Codeship.com! And use code JAVAPUB20 for a 20% discount! Now with Organizations!

We also thank Hazelcast for sponsoring the show! If you need a distributed implementation of the Java collections, no need to look further than Hazelcast!



Follow
Me
on
Twitter! (@fguime) (thanks!)

How about a summer shandy?

Direct download: JPHE53.mp3
Category:general -- posted at: 8:02am CDT

So let's try to understand this Java EE World, shall we? Going from the very basic request, we unravel the magic that a Java EE Container creates. When we see the tricks behind the wall, it suddenly looks a lot like SE with some sprinkled web stuff on top! If you want to really know what happens every time you go to a browser and type http://, you should hear this podcast!

Don't forget to SUBSCRIBE to our NewsCast Java Off Heap

 


We thank Codeship for being a Sponsor of the show! Need Continuous Delivery made simple? Check Codeship.com! And use code JAVAPUB20 for a 20% discount!

 

We also thank Hazelcast for sponsoring the show! If you need a distributed implementation of the Java collections, no need to look further than Hazelcast!

Links



Follow
Me
on
Twitter! (@fguime) (thanks!)

Ok, so now is allergy season, and I heard beer with honey is good for you. Or better yet, beer made of honey (Mead!)

Direct download: JPHE52.mp3
Category:general -- posted at: 8:13pm CDT

If you stepped into the Java EE world, you must have run into Spring. There is Spring XD, Spring Batch, Spring everything-under-the-sun. Sometimes we keep using it as a rut, but today we take a look at Spring (and Spring Core) with a new set of eyes and learn the real reason for Spring Beans. A great introduction if you never been exposed to Spring, and a even better reminder of why Spring Beans exists in the first place!

Don't forget to SUBSCRIBE to our NewsCast Java Off Heap


We thank Codeship for being a Sponsor of the show! Need Continuous Delivery made simple? Check Codeship.com! And use code JAVAPUB20 for a 20% discount!



Follow
Me
on
Twitter! (@fguime) (thanks!)

Ok, so now is allergy season, and I heard beer with honey is good for you. Or better yet, beer made of honey (Mead!)

Direct download: JPHE51.mp3
Category:general -- posted at: 3:09pm CDT

You worked with them "all the time", whenever you know it or not! Classloaders are the little workers that make sure all the code is there and ready to be executed. Bob revisits this topics and goes into more detail on how the ClassLoading hierarchy works, when to watch out, and how different frameworks (OSGI, and Java EE containers) may be configured to load classes. If you have run into "ClassNotFound" exceptions, this can help you explain why!

Don't forget to SUBSCRIBE to our NewsCast Java Off Heap


We thank Codeship for being a Sponsor of the show! Need Continuous Delivery made simple? Check Codeship.com! And use code JAVAPUB20 for a 20% discount!



Follow
Me
on
Twitter! (@fguime) (thanks!)

Ok, so now is allergy season, and I heard beer with honey is good for you. Or better yet, beer made of honey (Mead!)

Direct download: JPHE50.mp3
Category:general -- posted at: 10:21pm CDT

So moving to a more recent build tool we cover probably one of the more popular one. Maven is now incredibly robust, and helps fixing what is known as Jar Hell. Have you ever used two libraries that depended on different versions of a logging framework? Well, Maven makes using tons of libraries incredibly easy. Come and take a listen!


We thank Codeship for being a Sponsor of the show! Need Continuous Delivery made simple? Check Codeship.com! And use code JAVAPUB20 for a 20% discount!



Follow
Me
on
Twitter! (@fguime) (thanks!)

It's now cold, oh, how I wish for a beer? (Have any?) beer...beer...beeeeeer.....:)

Direct download: JPHE47.mp3
Category:general -- posted at: 7:37pm CDT

This is our yearly pilmigrade to JavaOne, where we get to meet good old friends, create new memories, and best of all, geek out for an entire week on Java! We got to learn about the big things waiting for Java (the Internet of Things), and got to talk about how people are making a difference in Java (With the adopt-a-jsr program). We got to talk to great people like Peter Pilgrim(@peter_pilgrim), Marcel Offermans (@m4rr5), Heather VanCura (@jcp_org), Bruno Souza (@brjavaman), Mattias Karlsson (@matkar) and Geert Bevin (@gbevin). In all, is a great podcast to get a feel of what has been happening at J1! (Oh, and you gotta follow them!)

Follow us! @fguime , and @bobpaulin

Help us pay for bandwidth! (Or a beer!)

 

Questions, feedback or comments! (comments@javapubhouse.com)

Subscribe to our podcast!

 

Direct download: JPHJavaOne2014.mp3
Category:general -- posted at: 9:11pm CDT

And we are ramping up again! This is an exciting time to be developing in Java. With the advent of Java 8, lambdas, streams, Jigzaw and the Internet of Things, we are coming back big! In this episode we introduce our co-host Bob Paulin, and offer a glimpse of Java 8, Jigsaw, Streams, and OSGI Standard.

Follow
Me
on
Twitter! (@fguime)

And @Bobpaulin

 

Ah, beer, it's April, and we just finished taxes ($!)

Tweet, Tweet! (https://twitter.com/#!/fguime)


Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

 

Direct download: JPHE41.mp3
Category:general -- posted at: 11:55pm CDT

So you have programmed for a while, and may even never realized that you have been using them, but there are static methods (which in turn can create static classes), inner classes and static inner classes. Sometimes is hard to understand why or when to use these, but never fear! After listening to this episode you will never get an unexpected static surprise!


Follow
Me
on
Twitter! (@fguime) (thanks!)

It's now cold, oh, how I wish for a beer? (Have any?) beer...beer...beeeeeer.....:)

Tweet, Tweet! (https://twitter.com/#!/fguime)


Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8& amp;tag=meq-20&linkCode=as2&camp=1789&creative=390957& creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr? cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4



Direct download: JPHE40.mp3
Category:general -- posted at: 10:41pm CDT

So, here's the deal, I went down from Chicago to JavaOne 2013, and took Bob Paulin along. There are sooo many sessions and such great content that it was really hard to know when to start. So we decided to do something cool! We set-up shop in the heart of JavaOne and grab unsuspecting speakers and ask them to spare a couple of minutes to tell us about their sessions (all awesomeness!). 

And the good news is that Oracle will make all of the presentations referred in this talk (and much more) available for everyone! Take a listen and prepare to be amazed by the awesome presenters of JavaOne.

 - Arun Gupta (@arungupta)

 - Bruno Souza (@brjavaman)

 - Danno Ferrin (@shemnon)

 - Hanz Dockter (@gradleware)

 - Charles Nutter (@headius)

 - Yoav Landman (@yoavlandman)

Direct download: JPHJavaOne.mp3
Category:general -- posted at: 9:21pm CDT

It happens all the time, you are working and suddenly you need to database an object. And maybe you have a fancy O/R Mapper or something like that, but we seldomly ask 'do we really need this in a relational format?'. There are actual alternatives (from byte serialization to xml, to, oh, my, NoSql databases). Here we explore the reasons why you may want to skip the Object Relational mapping and concentrate more on ease of development!

Follow
Me
on
Twitter! (@fguime)(thanks!)

 

Hey it's Freaking HOT outside! beer...beer...beeeeeer.....:)


Tweet, Tweet! (https://twitter.com/#!/fguime)


Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE39.mp3
Category:general -- posted at: 8:30pm CDT

You remember recursion right? that ugly, confusing thing they made you do either on CS-300, or at job interviews. Have you ever wondered how to make it safe and right? and why do we really use recursion? In this episode we go into proper recursion programming (and lose the fear of making it wrong), and understand why stacks get filled with it, and what problems do they really solve (answer, not many).

In addition we talk about the nature of Double objects, vs double the primitive (And why it is so hard to do == comparisons in doubles), plus some little known things about Strings (like interning). In all it has a little bit for everyone, so take a listen!

Follow
Me
on
Twitter! (@fguime)(thanks!)

And if you like what you hear, treat me a beer!

 

Hey it's winter (and not too many reasons to be outside, so might as well stay home and drink a few!) If you like what you hear, treat me a beer ! :) (It's the Java pub house after all :)



Vote for us in
iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments!
comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :)
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE35.mp3
Category:general -- posted at: 10:09am CDT


Shout out to the Chicago Java User's Group! Glad to be part of the Board!

And Shout out to Peter Hendriks and Tim Prijn for their presentation!(https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=4153). If interested, click on the 'media' icon on the right side!

With the establishment of Java 7 as the de-facto JRE of Oracle, the clock is ticking down for Java 6! It will be End-Of-Life around February 2013, so we better get going and upgrade! In this episode we cover how to migrate to Java 7, and cover some of the most notable Java 7 features (Networking nuts, your prayers have been answered!) while preparing a path to upgrade. If you have a Java 6 (or 5 or 4) project, this is mandatory listening!

If you just joined us, remember to follow me on Twitter! (@fguime)

and IF you really really really really really really really really really really really really really REALLY like what you hear, treat me a beer!




Tweet, Tweet! (https://twitter.com/#!/fguime)
Java 7 Features
Compatibility issues (At least glance at this section!)
Oracle session: CON4153 - Migrating Real-World Million-Line Code Bases to Java 7: Lessons Learned

Vote for us in
iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments!
comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :)
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE32.mp3
Category:general -- posted at: 3:47pm CDT


Big shout-out to everyone I met at JavaOne (including some avid podcast listeners!). Thanks for listening and for a great time down at JavaOne! Don't worry, we will be sharing all the stuff I learned on new episodes of the podcast.

It is also our Birthday (We have been airing episodes for a year!)! Happy to celebrate with everyone a year of the podcast (and if you want to celebrate it, treat me a beer! :) ).

With this episode we wrap the concept of generics and bounds (super / extends) and talk about type erasure (and compiler warnings that goes 'Hm, dunno what you're doing but I can't make sure it's right'

And, that...is that!

If you just joined us, remember to follow me on Twitter! (@fguime)

and IF you like what you hear, treat me a beer!

Beer of the Episode: Still hung-over from JavaOne's big concert (Go Pearl Jam!)


Tweet, Tweet! (https://twitter.com/#!/fguime)
Oracle Java Generics (what we're following on this podcast) http://docs.oracle.com/javase/tutorial/java/generics/
Dr Venkat presentation on Generics (Click on the "Media" at the right side for the presentation, a great presentation
Agile Developer (Dr Venkat's Must-check website and blog
Angelika Langer FAQ on Generics

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE31.mp3
Category:general -- posted at: 11:14pm CDT

Episode 30. I always thought Generics were as good as brand name Erasers (Java Generics part 1) ----
Hi there! Finally back on a (hopefully) standard schedule. I have been moving a house with three kids, two cats, one wife, one dog, and one grandma (they are heavy!, just kidding!) and just found the box with the podcast equipment! we hit the ground running with Generics. What are the benefits (and potential pitfalls) of Generics? Why do we even need them at all? The syntax looks pretty confusing, but with some Jedi Mind tricks one can actually start seeing how they work. If you use Generics (Almost everyone does :)) you should take a listen!

Ah! and if you are going to JavaOne check my t-shirt on the previous post

And if you just joined us, remember to follow me on Twitter! (@fguime)

Also, we are getting close to our first

BIRTHDAY!

If you have followed us all year long, or just recently join us, and like what you hear, treat me a beer!

Beer of the Episode: No beer, just coffee (it's hard to move a whole house



Tweet, Tweet! (https://twitter.com/#!/fguime)
Oracle Java Generics (what we're following on this podcast) http://docs.oracle.com/javase/tutorial/java/generics/

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4


Direct download: JPHE30.mp3
Category:general -- posted at: 12:33pm CDT

We go and visit the Primordial Java Concepts. As rules set in stone we explore the concept of multiple inheritance, method and variable scope (including the final keyword), abstract methods and @override. This is good for those starting up their Mad Java SkillZ (We're L33T, u K|\|0w?), or for those who were always curious why the language is this way.

And if you like the podcast, subscribe to my Twitter Feed! http://www.twitter.com/fguime

Beer of the Episode: Leinenkugel's Sunset Wheat
|~|P |~|P |~|P |~|P |~|P |~|P |~|P Leinenkugel's Sunset Wheat
|_|  |_|  |_|  |_|  |_|  |_|  |_|

 

It's THE END OF SUMMER! If you like what you hear, DEFINITIVELY, treat me a beer ! :) (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4
|~|P |~|P |~|P |~|P |~|P |~|P |~|P Leinenkugel's Sunset Wheat
|_|  |_|  |_|  |_|  |_|  |_|  |_|

 

Tweet, Tweet!(https://twitter.com/#!/fguime)

Scopeshttp://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Override annotationhttp://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why

Abstract Methods and Classeshttp://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

Vote for us in iTunes(http://itunes.apple.com/us/podcast/java-pub-house/id467641329)

Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book!(http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)

Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE29.mp3
Category:general -- posted at: 10:11pm CDT

As developers, we have to deal with Exceptions every day (or at least every other day). In this episode we dive a bit on exception (and exception handling), plus we talk about certain behaviors that are not so well-understood (try returning from a finally block, or why exception stack traces sometimes misteriously disappears). A good review for those who already know, and a great primer for those diving into Exceptions, this episode is sure to show some surprises!

(~)P (~)P (~)P (~)P (~)P (Beer) (~)P (~)P (~)P (~)P

It's SUMMER! If you like what you hear, DEFINITIVELY, treat me a beer ! :) (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

(~)P (~)P (~)P (~)P (~)P (Beer) (~)P (~)P (~)P (~)P

 

Tweet, Tweet! (https://twitter.com/#!/fguime) Try-with-resources constructhttp://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

Exception Definitionhttp://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html

Checked vs Unchecked Exceptions Debatehttp://www.ibm.com/developerworks/java/library/j-jtp05254/index.html

More Exception Debates from C vs C++, still a useful read. http://www.250bpm.com/blog:4

Vote for us in iTunes(http://itunes.apple.com/us/podcast/java-pub-house/id467641329)

Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book!(http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)

Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE26.mp3
Category:general -- posted at: 11:06pm CDT

Episode 25. Reflection and vampire classes, and compiling Java from within Java.

We have heard the word "Reflection" thrown around, what does it mean? it is a new Twilight series? is it about Vampires? In all, we shed sunlight into what reflection is (and more importantly why in the world you want to use it). And also cover a technique to compile and load programs within your program. Javascript guys had access to this by doing eval("your program here"), and while Java doesn't have an eval function, there are ways of achieving similar results (and very specific reasons to do this crazy technique. Mostly performance)

 

It's SUMMER! If you like what you hear, DEFINITIVELY, treat me a beer ! :) (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

 

Nimbus code to get the dang CacheMode (considered a private variable)

public class ButtonPainter extends AbstractRegionPainter {
    public ButtonPainter() {

        Class<?> c = null;
        PaintContext ctx = new PaintContext(new Insets(0,0,0,0), new Dimension(100,100), false, null, Double.POSITIVE_INFINITY, 2.0 );

        try {
            c = Class.forName("javax.swing.plaf.nimbus.AbstractRegionPainter$PaintContext$CacheMode");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        if (c != null) {
            Object cacheMode = c.getEnumConstants()[2];			// NINE_SQUARE_SCALE
            for (Field field : ctx.getClass().getDeclaredFields()) {
                if (c.getName().equals(field.getType().getName())) {        // if Field is the CacheMode
                    try {
                        // the following lines would not be necessary for example if
                        // AbstractRegionPainter.cacheMode were protected or public.

                        field.setAccessible(true);                          // make it accessible so that we can set it
                        field.set(ctx, cacheMode);                          // set the cachemode
                        // this is equivalent as sayin "ctx.cacheMode = CacheMode.NINE_SQUARE_SCALE" if it were public/protected
                        break;
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

    }

    @Override
    protected PaintContext getPaintContext() {
        return null;  //To change body of implemented methods use File | Settings | File Templates.
    }

    @Override
    protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) {
        //To change body of implemented methods use File | Settings | File Templates.
    }
}





Code to get instance from a source file

    public static Object getInstanceForSource(String className, String sourceForRule) {
        String filename = "tmp/" + className + ".java";
        File file = new File(filename);
        writeFile(filename, sourceForRule);				
        String classPath = System.getProperty("java.class.path");
        String[] args = new String[]{
                "-classpath", classPath,
                filename
        };


        StringWriter compilerOutput = new StringWriter();
        int status = com.sun.tools.javac.Main.compile(args,new PrintWriter(compilerOutput));
        additionalInfo.value = compilerOutput.toString();
        switch (status) {
            case 0:  // OK
                // Make the class file temporary as well
                File classFile = new File("./tmp/");
                try {
                    // Try to access the class and run its main method
                    URLClassLoader loader = new URLClassLoader(new URL[] {classFile.toURI().toURL()});
                    Class clazz = loader.loadClass(className);
                    return clazz.newInstance();
                } catch (Exception ex) {
                    additionalInfo.value = "Exception in main: " + Utilities.exceptionToString(ex)+"\n"+additionalInfo.value;
                }
                break;
            case 1:
                System.out.println ("Status: Error" +"\n"+additionalInfo.value);
                break;
            case 2:
                System.out.println ("Status: CMDERR" +"\n"+additionalInfo.value);
                break;
            case 3:
                System.out.println ("Status: SYSERR" +"\n"+additionalInfo.value);
                break;
            case 4:
                System.out.println ("Status: ABNORMAL" +"\n"+additionalInfo.value);
                break;
            default:
                System.out.println ("Status: UNKNOWN" +"\n"+additionalInfo.value);
                break;
        }
        return null;
    }

    public static void writeFile(String fileName, String content) {
        Writer writer;
        File file = new File(fileName);
        try {
            writer = new BufferedWriter(new FileWriter(file));
            writer.write(content);
            writer.close();
        } catch (IOException e) {
           System.out.println ("I/O exception "+e);
        }
    }


Tweet, Tweet!(https://twitter.com/#!/fguime)

Reflection 'trail' http://docs.oracle.com/javase/tutorial/reflect/index.html
Create dynamic applications with javax.tools http://www.ibm.com/developerworks/java/library/j-jcomp/index.html
URLClassLoaders (loads .class files generatedhttp://docs.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html

Vote for us in iTunes(http://itunes.apple.com/us/podcast/java-pub-house/id467641329)

Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book!(http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)

Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Direct download: JPHE25.mp3
Category:general -- posted at: 11:01pm CDT

In this podcast we turn and talk of that embarassing uncle that every API has (java.util.date), you know, the one that you have to live with because is family, but don't really like that much? We dive into what to avoid when using Date (and Calendar), and the most common pitfalls that we have falled for (1000*60*60*24 anyone?). In all, if you have used date extensively you probably already migrated to JodaTime, but if you are a casual user, then take a listen, just to make sure you are not bitten by the Date traps!

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Follow us in Twitter!https://twitter.com/#!/fguime

http://joda-time.sourceforge.net/ (Joda Time)
http://www.wolkje.net/2010/01/06/java-date-and-time-api-and-jsr-310/(New Date JSR + what goes under the covers)

Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)

Direct download: JPHE20.mp3
Category:general -- posted at: 8:19pm CDT

We finish our discussion on the ObjectOutputStream by covering the SerialVersionUID, and then move onto ObjectOutputStream's citadine cousin, XMLEncoder and Decoder (and why would you go and hang out with it). We also make a quick introduction to "The Bean" (Java Beans that is), and discover there isn't too much to it. If you are persisting and/or transmitting, listen to the shocking conclusion (gasp!) of serialization!

Rate us in  iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Follow us in Twitter! https://twitter.com/#!/fguime

http://java.sun.com/developer/technicalArticles/Programming/serialization/ (Serialization/Deserialization)
http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/spec/version.html#6678 (Compatible/Incompatible serialization changes)
http://java.sun.com/products/jfc/tsc/articles/persistence4/(XMLEncoder/Decoder)

Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)

Direct download: JPHE19.mp3
Category:general -- posted at: 10:52pm CDT

We all have the need to serialize/deserialize objects (either through the "wire" or to file). In this podcast we go and analyze what exactly happens when we create an ObjectOutputStream and write to it, and more importantly what pitfalls are there to avoid (Out ot memory errors, stale object updates, Not Serializable Exceptions, and toenail fungus!). If you ever considered using ObjectOutput/InputStream, or are actively using in your current projects, take a listen!

https://github.com/eishay/jvm-serializers/wiki/ (Serialization performance comparison for Java, pick one!)

Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)

Direct download: JPHE18.mp3
Category:general -- posted at: 8:04pm CDT

In this episode we go over Aspects (and AspectJ), what really is, and when to use them. It turns out, that there is nothing misterious about them! We also cover how to set-up Aspects for J2SE so you can start using them immediately!

Questions, feedback or comments! comments@javapubhouse.com

VM Parameter
-javaagent:dep/aspectjweaver.jar

Example Aspect

@Aspect

public class OrderAspect {

@Before("execution(* *.*(Order))") // must qualify
public void anyCall() {
System.out.println("Was called from anywhere");
}
}

Example aop.xml file

          <aspectj>
<aspects>
<aspect name="OrderAspect"/>
</aspects>
<weaver options="-verbose -showWeaveInfo">
</weaver>
</aspectj>

Example Folder Structure

src
|
|-META-INF
|
|-aop.xml

References:

http://www.eclipse.org/aspectj/doc/released/adk15notebook/ataspectj-pcadvice.html

http://www.eclipse.org/aspectj/doc/next/quick5.pdf

http://blog.espenberntsen.net/2010/03/20/aspectj-cheat-sheet/

(Using aspects with annotations)
http://stackoverflow.com/questions/2011089/aspectj-pointcut-for-all-methods-of-a-class-with-specific-annotation

Direct download: JPHE8.mp3
Category:general -- posted at: 3:00pm CDT

In this episode of Java pub house, we talk about Deadlocks, livelocks (and other spooky things). Most importantly we talk on how to spot them (using jstack, or visualvm), and how to program defensively against them. We also talk about escaped locks (the source of most deadlocks), and the wait/notify language construct. Finally we describe the unfairness of the lock (locks are not "fair" by default), and why is it so.

Direct download: JPHE2.mp3
Category:general -- posted at: 12:04pm CDT

1