Java Pub House

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

Episode 28. Extra! Extra! JMS Delivering Messages to your App! Extra! Extra! ----

Java Message Service (or JMS for short) is a collection of APIs and implementations that allows you to send "messages" across your applcation. But why is it so popular?, and what exactly is it trying to solve (what is a message anyways)? In this episode, we take our bycicle, and trace the delivery route of JMS to figure out the good, and avoid some JMS potholes along the way, making for a smooth message delivery experience!

Beer of the Episode: Leinenkugel's Summer Shandy
|~|P |~|P |~|P |~|P |~|P |~|P |~|P Leinenkugel's Summer Shandy
|_| |_| |_| |_| |_| |_| |_|

 

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 |~|P |~|P Leinenkugel's Summer Shandy
|_|  |_|  |_|  |_|  |_|  |_|  |_|

 

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

Enterprise Integration Patternshttp://www.amazon.com/Enterprise-Integration-Patterns-Designing-Deploying/dp/0321200683

Intro to JMS Conceptshttp://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/basics.html

Apache ActiveMQhttp://activemq.apache.org/

ActiveMQ Language Clients (ActionScript, Ajax, C, C++, C#, .Net, Delphi, Erlang, Flash, Haskell, Javascript, Perl, PHP, Pike, Python, Ruby, Smalltalk, Websockets)http://activemq.apache.org/cross-language-clients.html

RabbitMQ http://www.rabbitmq.com/

JMS Description and Implementationhttp://en.wikipedia.org/wiki/Java_Message_Service

Embed ActiveMQ Broker in codehttp://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

JMS Tutorialhttp://docs.oracle.com/javaee/1.4/tutorial/doc/JMS.html#wp84181

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: JPHE28.mp3
Category:Tools/Libraries -- posted at: 7:51pm CDT

Episode 27. There's a Log File in the folder in the middle of the App ----

(Sing to the children's song There's a hole in the middle of the sea)
Logging is part of everyday production debugging life. If you ever had to troubleshoot a production application, the you most likely have looked at log files. These log files can either be a salvation, or an inmense source of frustration. In this podcast we delve into the different logging frameworks, and more importantly, what to log and not to log (and how to log it).


|~|P |~|P |~|P |~|P |~|P |~|P |~|P Beer! (or Mai Tais!)
|_|  |_|  |_|  |_|  |_|  |_|  |_|

 

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 |~|P |~|P Beer! (or Mai Tais!)
|_|  |_|  |_|  |_|  |_|  |_|  |_|

 

Tweet, Tweet! (https://twitter.com/#!/fguime) Java Logging Frameworkhttp://en.wikipedia.org/wiki/Java_logging_framework

SLF4J (The facade frameworkhttp://www.slf4j.org/

Log4Jhttp://logging.apache.org/log4j/1.2/index.html

Java Logging APIhttp://docs.oracle.com/javase/1.4.2/docs/guide/util/logging/

The linux utilities for windows! (Cygwin)http://www.cygwin.com/

Grep! Grep grepping grep!http://en.wikipedia.org/wiki/Grep

More Grephttp://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/

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: JPHE27.mp3
Category:Tools/Libraries -- posted at: 5:39pm 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

Designers will come to you, and say "Hm, I think your program is not as user-friendly". And sometimes, when you ask them to elaborate, they seem to follow a hidden and cryptic ritual. They are right, yet, is hard to see how did they come up with those usability suggestion. Alas, behind every usability magician, there is a magic trick! and on this podcast we reveal in plain sight what makes interfaces usable (and quote a lot from Alan Cooper's book). Once you see the trick, you would never be daunted on spotting usability yourself, and making things much more usable before passing them on. Usability magic for all of us!

If you like what you hear, treat me a beer! https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

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

The immates are running the asylum (Alan Cooper) http://www.amazon.com/The-Inmates-Are-Running-Asylum/dp/0672316498
Don't make me think http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=sr_1_1?s=books&ie=UTF8&qid=1336346454&sr=1-1

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: JPHE24.mp3
Category:Usability -- posted at: 6:26pm CDT

It always starts when you do your first Thread.sleep(). Why do I have to check for InterruptedException? is it serious? why do I have to catch it? We start with answering these questions and step down the rabbit hole to discover the inner workings of Wait/Notify (and what the IllegalMonitorStateException really means). If you ever have to work with more than one thread (who doesn't nowadays?) take a listen! You'll be notify()ed of your success!

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

Wait/Notify http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#wait()
Concurrency Utilities http://java.sun.com/developer/technicalArticles/J2SE/concurrency/
Thread description from the JVM Specshttp://docs.oracle.com/javase/specs/jvms/se5.0/html/Threads.doc.html#22488

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: JPHE23.mp3
Category:Multithreading -- posted at: 4:43pm CDT

Garbage collections are like the engine of a car, we know it works, we know that it powers the car, but not much else, but once it breaks down, we usually don't have a too much of a clue on how to fix it. In this episode we talk about how garbage collections happen, the things it looks for, and more importantly, how it changes your code (there are certain things that you can do to make your code garbage collector friendly). Having this knowledge will help you in the long road on troubleshooting any garbage collection issues (including tuning!), so take a listen to the garbage man!

There is a new band in town! Lambda Expression. Listen to me, and my one-man band in facebook (www.facebook.com/lambdaexpression). And LIKE! (doesn't cost anything!)

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

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

The holy grail of JVM Tuning http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
YourKit Java memory profiler http://www.yourkit.com/
Charlie Hunt Java performance bookhttp://www.amazon.com/Java-Performance-Charlie-Hunt/dp/0137142528

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: JPHE22.mp3
Category:Memory -- posted at: 11:34pm CDT

So you're programming along when suddenly support calls and says that the application just "disappeared", or, the server process is not there anymore, both of them leaving you with a hprof.pid file. You have just witnessed the murder of a Java Virtual Machine, and now is your turn to figure out what happen, and what can we do to prevent such senseless crashes. We cover the main reasons for crashes (most likely not your fault), and best of all, ways around it! So put on your detective hat and let's solve the mysteries surrounding JVM Crashes once and for all!

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

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

Most JVM Options http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
Troubleshooting tips http://www.oracle.com/technetwork/java/javase/index-137495.html
-XX:+ShowMessageBoxOnError http://www.oracle.com/technetwork/java/javase/clopts-139448.html#gbmui
.hotspot_compiler to stop compilation of methods
More JVM Options (-Xint to disable JIT compiling)

Java 7 recipes book made it to the Java Magazine!http://www.oraclejavamagazine-digital.com/javamagazine/20120304?pg=3#pg10

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: JPHE21.mp3
Category:Optimization -- posted at: 9:40pm 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