<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Java</title>
    <description>Dries Buytaert on Java.</description>
    <link>https://dri.es/tag/java</link>
    <atom:link href="https://dri.es/tag/java/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Most influential OOPSLA 2007 paper award</title>
      <link>https://dri.es/most-influential-oopsla-2007-paper-award</link>
      <guid>https://dri.es/most-influential-oopsla-2007-paper-award</guid>
      <pubDate>Thu, 26 Oct 2017 09:08:57 -0400</pubDate>
      <description>&lt;p&gt;I was in for a nice surprise this week. Andy Georges, Lieven Eeckhout and I received an ACM SIGPLAN award for the most influential OOPSLA 2007 paper. Our paper was called &amp;quot;&lt;a href=&quot;https://dri.es/files/oopsla07-georges.pdf&quot;&gt;Statistically rigorous Java performance evaluation&lt;/a&gt;&amp;quot; and was published 10 years ago at the OOPSLA conference. It helped set a standard for benchmarking the performance of Java applications. A quick look on the ACM website shows that our paper has been cited &lt;a href=&quot;https://dl.acm.org/citation.cfm?id=1297033&quot;&gt;156 times&lt;/a&gt;. The award was totally unexpected, but much appreciated. As much as I love my current job, thinking back to some of my PhD research makes me miss my academic work. &lt;em&gt;Congratulations Andy and Lieven!&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Java.net using Drupal</title>
      <link>https://dri.es/java-net-using-drupal</link>
      <guid>https://dri.es/java-net-using-drupal</guid>
      <pubDate>Tue, 08 Sep 2009 12:10:18 -0400</pubDate>
      <description>&lt;p&gt;With the help of &lt;a href=&quot;http://cognisync.com&quot;&gt;Cognisync&lt;/a&gt;, Sun Microsystems converted &lt;a href=&quot;http://java.net&quot;&gt;Java.net&lt;/a&gt;, the website of the Java community, to &lt;a href=&quot;https://www.drupal.org&quot;&gt;Drupal&lt;/a&gt;. The previous version of java.net, was custom built by &lt;a href=&quot;http://oreilly.com&quot;&gt;O&#039;Reilly Media&lt;/a&gt;. Interesting choice for a site devoted to Java, but needless to say, a great testimonial to Drupal.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/images/drupal/java-net.jpg&quot; alt=&quot;A screenshot of the Java.&quot; width=&quot;927&quot; height=&quot;602&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Java performance evaluation through rigorous replay compilation</title>
      <link>https://dri.es/java-performance-evaluation-through-rigorous-replay-compilation</link>
      <guid>https://dri.es/java-performance-evaluation-through-rigorous-replay-compilation</guid>
      <pubDate>Tue, 02 Sep 2008 07:16:33 -0400</pubDate>
      <description>&lt;p&gt;Our paper &lt;a href=&quot;https://dri.es/files/oopsla08-georges.pdf&quot;&gt;Java Performance Evaluation through Rigorous Replay Compilation&lt;/a&gt; (PDF, 1.9MB) has been accepted for publication at OOPSLA&#039;08. This is joint work with &lt;a href=&quot;http://itkovian.net&quot;&gt;Andy Georges&lt;/a&gt; and &lt;a href=&quot;https://www.elis.ugent.be/~leeckhou&quot;&gt;Lieven Eeckhout&lt;/a&gt; that I worked on before &lt;a href=&quot;https://dri.es/dr-dre&quot;&gt;I got my PhD&lt;/a&gt; and &lt;a href=&quot;https://dri.es/acquia-my-drupal-startup&quot;&gt;left the university to start Acquia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Good news because &lt;a href=&quot;http://oopsla.org&quot;&gt;OOPSLA&lt;/a&gt;, which is short for &lt;em&gt;ACM conference on object-oriented programming, systems, languages, and applications&lt;/em&gt; has incubated many state-of-the-art technologies, including design patterns, refactoring, aspect-oriented software development, dynamic compilation and optimization, the Unified Modeling Language, and more.&lt;/p&gt;
&lt;h3&gt;Paper abstract&lt;/h3&gt;
&lt;p&gt;A managed runtime environment, such as the Java virtual machine, is non-trivial to benchmark. Java performance is affected in various complex ways by the application and its input, as well as by the virtual machine (JIT optimizer, garbage collector, thread scheduler, etc.). In addition, non-determinism due to timer-based sampling for JIT optimization, thread scheduling, and various system effects further complicate the Java performance benchmarking process.&lt;/p&gt;
&lt;p&gt;Replay compilation is a recently introduced Java performance analysis methodology that aims at controlling non-determinism to improve experimental repeatability. The key idea of replay compilation is to control the compilation load during experimentation by inducing a pre-recorded compilation plan at replay time. Replay compilation also enables teasing apart performance effects of the application versus the virtual machine.&lt;/p&gt;
&lt;p&gt;This paper argues that in contrast to current practice which uses a single compilation plan at replay time, multiple compilation plans add statistical rigor to the replay compilation methodology. By doing so, replay compilation better accounts for the variability observed in compilation load across compilation plans. In addition, we propose matched-pair comparison for statistical data analysis. Matched-pair comparison considers the performance measurements per compilation plan before and after an innovation of interest as a pair, which enables limiting the number of compilation plans needed for accurate performance analysis compared to statistical analysis assuming unpaired measurements.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The impact of multicore architectures on software</title>
      <link>https://dri.es/the-impact-of-multicore-architectures-on-software</link>
      <guid>https://dri.es/the-impact-of-multicore-architectures-on-software</guid>
      <pubDate>Thu, 06 Dec 2007 00:54:31 -0500</pubDate>
      <description>&lt;p&gt;After my internal PhD defense next Thursday, &lt;a href=&quot;https://dri.es/the-impact-of-multicore-architectures-on-software#biography&quot;&gt;Michael Hind&lt;/a&gt; (a member of my PhD dissertation committee) will give a presentation about the impact of multicore architectures on software. &lt;a href=&quot;https://dri.es/the-impact-of-multicore-architectures-on-software#logistics&quot;&gt;Feel free to attend&lt;/a&gt;!&lt;/p&gt;
&lt;h3&gt;Abstract&lt;/h3&gt;
&lt;p&gt;Mainstream computer vendors have announced two dramatic changes in their future architectures. First, the clock speed and the amount of cache memory per processor will dramatically change. Namely, the exponential increase in clock frequency we&#039;ve experienced over the past decades will cease to occur, and in some cases processor speeds will decrease. Also, the relative amount of cache memory for a processor will decrease. Second, there will be exponentially increasing number of processor cores on a chip.&lt;/p&gt;
&lt;p&gt;These changes present two unprecedented challenges to the software stack:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How does the software deal with the loss of single threaded performance and cache memory, and&lt;/li&gt;
&lt;li&gt;How does the software utilize the additional capabilities provided by multiple cores on a chip?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In his talk, Michael will argue why these challenges present great opportunities for software optimization and suggest some approaches to address these fundamental problems.&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;biography&quot;&gt;Biography&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Michael Hind received his Ph.D. from New York University in 1991. From 1992-1998, Michael was an assistant and associate professor of computer science at the State University of New York at New Paltz. In 1998, Michael became a Research Staff Member in the Software Technology Department at the IBM T.J. Watson Research Center, working on the Jalapeno project, the project that produced the open source Jikes RVM. In 2000, he became the manager of the Dynamic Optimization Group at IBM Research, and in 2007, became Senior Manager of the Programming Technologies Department at IBM Research. Michael is an associate editor of ACM TACO, has served on over a dozen program committees, given talks at top universities and conferences, and co-authored over 40 publications. His research interests include adaptive optimization, program analysis, and software optimizations for multicore processors.&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;logistics&quot;&gt;Logistics&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The presentation is free to attend for all. It starts at 14:00h on December 13th, and will take place at the Jozef Plateauzaal (Jozef Plateaustraat 22, 9000 Gent).&lt;/p&gt;
</description>
    </item>
    <item>
      <title>PhD dissertation milestone</title>
      <link>https://dri.es/phd-dissertation-milestone</link>
      <guid>https://dri.es/phd-dissertation-milestone</guid>
      <pubDate>Thu, 08 Nov 2007 11:33:27 -0500</pubDate>
      <description>&lt;p&gt;I just sent the members of my PhD dissertation committee their copy of my dissertation. &lt;em&gt;Yay!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Writing a PhD dissertation has been a completely new experience, and a challenging one for sure. Writing for weeks on end is hard. However, mailing your PhD dissertation to the members of your PhD dissertation committee is fun, and warrants a blog post.&lt;/p&gt;
&lt;p&gt;The title of my PhD dissertation will be &lt;em&gt;Profiling techniques for Java performance analysis and optimization&lt;/em&gt;. I&#039;m fortunate to have two of the world&#039;s best Java people on my PhD dissertation committee – &lt;a href=&quot;https://en.wikipedia.org/wiki/James_Gosling&quot;&gt;James Gosling&lt;/a&gt; (the inventor of Java and Vice President at Sun Microsystems) and &lt;a href=&quot;https://researcher.watson.ibm.com/view.php?person=us-hindm&quot;&gt;Michael Hind&lt;/a&gt; (Senior Manager of the Programming Technologies Department at IBM Research) – so I&#039;m looking forward to what they have to say about it.&lt;/p&gt;
&lt;p&gt;Next up is my PhD defense. That and getting Drupal 6 out, of course.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Statistically Rigorous Java Performance Evaluation</title>
      <link>https://dri.es/statistically-rigorous-java-performance-evaluation</link>
      <guid>https://dri.es/statistically-rigorous-java-performance-evaluation</guid>
      <pubDate>Wed, 01 Aug 2007 06:31:50 -0400</pubDate>
      <description>&lt;p&gt;The following paper has &lt;a href=&quot;https://dri.es/using-hpm-sampling-to-drive-dynamic-compilation&quot;&gt;also been accepted&lt;/a&gt; for publication at &lt;a href=&quot;http://oopsla.org&quot;&gt;OOPSLA 2007&lt;/a&gt;: &lt;a href=&quot;https://dri.es/files/oopsla07-georges.pdf&quot;&gt;Statistically Rigorous Java Performance Evaluation&lt;/a&gt; (PDF, 1.6MB).&lt;/p&gt;
&lt;h3&gt;Paper abstract&lt;/h3&gt;
&lt;p&gt;Java performance is far from being trivial to benchmark because it is affected by various factors such as the Java application, its input, the virtual machine, the garbage collector, the heap size, etc. In addition, non-determinism at run-time causes the execution time of a Java program to differ from run to run. There are a number of sources of non-determinism such as Just-In-Time (JIT) compilation and optimization in the virtual machine (VM) driven by timer-based method sampling, thread scheduling, garbage collection, and various system effects.&lt;/p&gt;
&lt;p&gt;There exist a wide variety of Java performance evaluation methodologies used by researchers and benchmarkers. These methodologies differ from each other in a number of ways. Some report average performance over a number of runs of the same experiment; others report the best or second best performance observed; yet others report the worst. Some iterate the benchmark multiple times within a single VM invocation; others consider multiple VM invocations and iterate a single benchmark execution; yet others consider multiple VM invocations and iterate the benchmark multiple times.&lt;/p&gt;
&lt;p&gt;This paper shows that prevalent methodologies can be misleading, and can even lead to incorrect conclusions. The reason is that the data analysis is not statistically rigorous. In this paper, we present a survey of existing Java performance evaluation methodologies and discuss the importance of statistically rigorous data analysis for dealing with non-determinism. We advocate approaches to quantify startup as well as steady-state performance, and, in addition, we provide the JavaStats software to automatically obtain performance numbers in a rigorous manner. Although this paper focuses on Java performance evaluation, many of the issues addressed in this paper also apply to other programming languages and systems that build on a managed runtime system.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Why PHP (and not Java)?</title>
      <link>https://dri.es/why-php-and-not-java</link>
      <guid>https://dri.es/why-php-and-not-java</guid>
      <pubDate>Fri, 28 Apr 2006 05:42:32 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/images/blog/php-vs-java.jpg&quot; alt=&quot;Illustration of a strong blue figure labeled &amp;amp;quot;PHP&amp;amp;quot; facing a smaller red figure labeled &amp;amp;quot;Java&amp;amp;quot; with &amp;amp;quot;vs.&quot; width=&quot;742&quot; height=&quot;417&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Almost every week or so, someone asks me: &lt;q&gt;Why PHP? Apparently, you are doing Java too. So why not Java? Do you regret the fact that you wrote Drupal in PHP?&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;The answer?&lt;/p&gt;
&lt;p&gt;No, I don&#039;t regret the choice of PHP. Both languages will get the job done, but Drupal&#039;s main target audience are not conservative verticals (government, healthcare, banking).&lt;/p&gt;
&lt;p&gt;The web is built by millions of individuals, many of which are amateurs. They continuously update, tweak and rebuild their websites. Scripting languages like PHP lend themselves to that, and are widely available at affordable cost. Sun, on the other hand, failed to make Java accessible to amateurs.&lt;/p&gt;
&lt;p&gt;It would have been very difficult to get critical mass if Drupal was written in Java.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
