archive-ca.com » CA » E » EVANJONES.CA

Total: 397

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • Part Two: Things Java Got Wrong (evanjones.ca)
    Level Virtual Machine LLVM would make a better platform than the JVM The reason is that LLVM is a closer match to the underlying hardware This enables it to execute C or C programs or to be used as a CPU instruction set The JVM on the other hand can only represent things that can be shoehorned onto the Java model I think using LLVM or something similar would lead to better interoperability with native code and enable new languages to be implemented more efficiently All Bytecode All The Time Originally Sun really pushed Java s write once run anywhere motto As part of this strategy they actively discouraged developers from integrating Java with existing code Today the way to interface with native code is via the Java Native Interface JNI which is not exactly easy to use It would have been very advantageous to provide some easier mechanism However that would have been counter to Sun s cross platform goals This was more or less the heart of the Sun Microsoft Java lawsuit which took years to be resolved at the cost of 1 6 billion USD for Microsoft As James Gosling notes it is an advantage that Java programs are not tied to one operating system or CPU However as a developer I sympathize with Microsoft s original position Java is a good language so why can t I easily integrate it with my existing projects JIT Only Execution This is another part of Sun s portability game According to them Java programs must only be distributed as bytecode which leads to two problems First it means that users must download the JRE in order to use Java software Even though downloads are much faster today than in 1995 it still makes it much harder for a user to download a new Java application than it is to grab BitTorrent It would be much nicer if developers could optionally build a single native executable Even if that executable used Python s trick and distributed the bare minimum components of the JRE it be wonderful The second reason that JIT Only is bad is that it makes sharing code in memory more difficult Native code that is compiled into shared libraries only gets loaded into memory once no matter how many programs use them Additionally it only needs to be compiled once Since Java code must be compiled by the JIT each process has its own copy I think Microsoft s on disk code cache approach with the CLR is a winner here Summary Interestingly everything on this list is an implementation issue not problems with the language itself This means that it would be possible for Sun or someone else to fix them For example GCJ allows Java to be compiled to native code However I do not see Sun or any other major organization supporting any major changes to Java in the near future I hope to be proven wrong The Future for Java At this point

    Original URL path: http://www.evanjones.ca/java-bad.html (2016-04-30)
    Open archived version from archive

  • Part One: Things Java Got Right (evanjones.ca)
    commonly create exploitable security flaws Java requires all memory accesses to be checked to ensure they are in fact valid This is more expensive than C s assume the programmer is right model The best example is that every array access includes a check to ensure that it is within the limits Like garbage collection this trades some runtime performance in order to make writing software easier Standard Library A well defined standard library makes it much easier for separately defined APIs to interact In the C C world every API defines its own string and container types which makes life miserable Java on the other hand was defined at the beginning with a nice set of standard types Unicode strings containers and operating system objects like files and sockets These types are critical since nearly every application and API makes use of them This makes code reuse much easier There are other important parts of the standard library but they are all somewhat application specific Runtime Dynamic Linking Java is completely dynamically linked The advantage is that only one class needs to be recompiled when it changes This is very unlike C where nearly all the code that uses a class must be recompiled if it changes This means that hacks are required to put C classes into shared libraries With Java this just works This makes it easier to reuse code because shared libraries are easier to create The cost is again performance Certain operations are more expensive because they must do look ups at runtime instead of using compile time information Platform Independent Bytecode Java is not distributed as binary executables compiled for a specific CPU and operating system but rather as platform independent bytecode This is another decision that has performance implications as it requires the

    Original URL path: http://www.evanjones.ca/java-good.html (2016-04-30)
    Open archived version from archive

  • Frequency Allocation Posters (evanjones.ca)
    American you can get a PDF version or order one from the National Telecommunications and Information Administration cost USD 4 25 The Canadian equivalent is available from Industry Canada If you contact them they will mail you free printed copies

    Original URL path: http://www.evanjones.ca/frequency-posters.html (2016-04-30)
    Open archived version from archive

  • You and Me and Everyone We Know (evanjones.ca)
    movie is very strange to the point where it is hard to describe But the really mysterious part is that somehow improbably it all works It is a joy to watch and it left me with a sense of wonder for the beauty of human relationships Magic Ebert s review contains a good attempt to describe the plot but also contains a few spoilers Interestingly Miranda July the woman who

    Original URL path: http://www.evanjones.ca/movies/you-and-me.html (2016-04-30)
    Open archived version from archive

  • Brown, Dan. The Da Vinci Code. New York: Doubleday, April, 2003. ISBN: 0385504209 (evanjones.ca)
    52 This will be the last Dan Brown book I will read I found the first third of the novel entertaining but it quickly felt like I had read this book before Brown s style is so formulaic that I had predicted most of the twists and turns before they happened which really reduces the entertainment value If you have not read any of Brown s other books I can

    Original URL path: http://www.evanjones.ca/books/davinci-code.html (2016-04-30)
    Open archived version from archive

  • Hunt, Andrew and Thomas, David. The Pragmatic Progammer. Reading, MA, USA: Addison Wesley Longman Inc., October 1999. ISBN: 020161622X (evanjones.ca)
    2005 November 17 22 06 This classic software engineering book covers best practices for being more productive Anyone who is serious about developing high quality software must read this book This is the second time I ve read it and I found that I still enjoyed it and was reminded of things that I had forgotten Some parts of it are starting to become out of date but that doesn

    Original URL path: http://www.evanjones.ca/books/pragmatic-programmer.html (2016-04-30)
    Open archived version from archive

  • Tim Bray: Hard Open Problems in Network Computing (evanjones.ca)
    C and Java Both of these problems have been investigated by academic research before but I think there is still lots of work in the specific context of dynamic languages The IDE problem is a big one for many programmers who rely on tools like Visual Studio NetBeans or Eclipse These developers may not be comfortable with the command line or manually setting up build systems version control and test suites The research challenge in this space is code completion a very useful and addictive feature Code completion is difficult for dynamic languages since there is no way to know the exact type of a variable There is previous work in this area for compilers but I think there is still work to be done in the context of IDEs The performance problem is more interesting In reality performance does not matter for a huge class of applications that are primarily I O bound However for some of these applications response time may be critical For others scaling up to support large numbers of users can be an issue Hence performance is important In order to avoid the issue a very large fraction of the Python standard library is written in C This is a workable solution but it makes portability development and debugging more difficult In my opinion the performance problem is partly real and partly just bad public relations However one related area that is critical is concurrency For example neither Python or Ruby support true concurrent execution although Jython and JRuby do I think there is significant potential for run time code generation to greatly improve the performance of dynamic languages Web Services and Syndication Bray s opinion is that the official web services stack is far too complicated and that it is basically a recreation of

    Original URL path: http://www.evanjones.ca/tbray-hard-problems.html (2016-04-30)
    Open archived version from archive

  • Improving GTK Text Performance (evanjones.ca)
    sizes and concludes that a 256 entry cache is best It is interesting to note how much the performance varies for some languages when the cache size changes Additionally the cache actually hurts the performance of a couple languages likely because they have so many misses that it does not provide any benefit This shows that careful benchmarking and cache tuning are very important for good performance I would suggest

    Original URL path: http://www.evanjones.ca/gtk-performance.html (2016-04-30)
    Open archived version from archive