NFJS Speakers
- Matthew Bass
- David Bock
- Stevie Borne
- John Carnell
- Tim Dalton
- Scott Davis
- Keith Donald
- Robert Fischer
- Mark Fisher
- Neal Ford
- David Geary
- Andrew Glover
- Brian Goetz
- Stuart Halloway
- Jason Harwig
- John Heintz
- David Hussman
- Mark Johnson
- Scott Leberknight
- Tiffany Lentz
- Chris Maki
- Kito Mann
- Tom Marrs
- Matthew McCullough
- Alex Miller
- Ted Neward
- Joseph Nusairat
- Michael Nygard
- Pratik Patel
- Srini Penchikala
- Mark Richards
- Jared Richardson
- Brian Sam-Bodden
- Srivaths Sankaran
- Nathaniel Schutta
- Ryan Shriver
- Ken Sipe
- Brian Sletten
- Venkat Subramaniam
- Burr Sutter
- Shashank Tiwari
- Vladimir Vivien
- Mark Volkmann
- Craig Walls
Ted Neward
Enterprise, Virtual Machine and Language Wonk
Blog
Review: "Iron Python in Action" by Michael Foord and Christian Muirhead
Posted Wednesday, July 1, 2009
OK, OK, I admit it. Maybe significant whitespace isn't all bad. (But don't let me ever catch more »Review: "Programming Clojure", by Stu Halloway
Posted Sunday, June 28, 2009
(Disclaimer: In the spirit of full disclosure, Stu is a friend, fellow NFJS speaker, and former co-worker of mine from DevelopMentor.) I present this review to you in two parts. Short version: If you want to learn Clojure, more »Interview with Scott Bellware and Scott Hanselman on the Death of the Professional Speaker
Posted Thursday, June 18, 2009
Well, OK, the title is trolling ever so slightly, but there is an interesting trend at work, and I'm genuinely concerned about its ultimate expression if the trend continues to its logical conclusion. Have a look and tell me if you more »The "controversy" continues
Posted Sunday, June 14, 2009
Apparently the Rails community isn't the only one pursuing that ephemeral goal of "edginess"—another blatantly sexist presentation came off without a hitch, this time at a Flash conference, and if anything, it was worse tha more »A eulogy: DevelopMentor, RIP
Posted Monday, June 1, 2009
Update: See below, but I wanted to include the text Mike Abercrombie (DM's owner) posted as a comment to this post, in the body of the blog post itself. "Ted - All of us at DevelopMentor greatly appreciate your admiration. We'r more »SSCLI 2.0 Internals
Posted Tuesday, May 26, 2009
Joel's weblog appears to be down, so in response to some emails I've posted my draft copy of SSCLI 2.0 Internals here. I think it's the same PDF that Joel had on his weblog, but I haven't made absolutely c more »He was Aaron Erickson... Now he's Aaron Erickson, ThoughtWorker
Posted Saturday, May 23, 2009
Yep, you heard that right—Aaron Erickson, author of The Nomadic Developer, is now a ThoughtWorker. For those of who you don't know Aaron, he's been a consultant at another consulting company for a while, and has been exploring a numbe more »Of Tomcat 6, native services, Windows 2008R2, and pain...
Posted Saturday, May 23, 2009
So I'm putting together a Windows 2008 R2 x64 RC Java image for a client (more on that later), and everything's breezing along fine. Install the OS, chec more »TechEd 2009 Thoughts
Posted Friday, May 15, 2009
These are the things I think as I wing my way out of LA fresh from this year's TechEd 2009 conference: I think I owe the attendees at DTL309 ("Busy .NET Developer's Guide to F#") an explanation. It's always embarrassing when more »Windows 7 RC install experience
Posted Saturday, May 2, 2009
Since a number of people have been connecting to my blog via my last post on installing Windows 7 into a VMWare image, I thought since the Windows7 RC is now available, I'd update my experiences with installing it. I downloaded the Windo more »On speaking, trolling, inciting and growing
Posted Friday, May 1, 2009
It's been going around in developer circles now for a few days, this whole controversy about the "Perform like a pr0n star" presentation from the Golden Gate Ruby Conference and the related accusations of misogyny and sexism and o more »From the Mailbag: Polyglot Programmer vs. Polyactivist Language
Posted Tuesday, March 24, 2009
more »Presentations
Why the Next Five Years Will Be About Languages
Thanks to the plateau of per-chip performance increases and the resulting need to work better with multi-core CPUs, the relative difficulty of mapping user requirements to general-purpose programming languages, the emergence of language-agnostic "virtual more »The Busy Java Developer's Guide to Debugging
Bugs? We all know your code has no bugs, but someday, you're going to find yourself tracking down a bug in somebody else's code, and that's when it's going to be helpful to have some basic ideas about bug-tracking in your toolbox. Learn to make use of the more »The Busy Java Developer's Guide to Reflection
If you've never used Reflection (java.lang.reflect), you don't know what you're missing. more »The Busy Java Developer's Guide to ClassLoaders
If you've ever gotten a ClassCastException and just knew the runtime was wrong about it, or found yourself copying .jar files all over your production server just to get your code to run, then you probably find the Java ClassLoader mechanism to be deep, d more »The Busy Java Developer's Guide to Java Platform Security
Permissions, policy, SecurityExceptions, oh my! The Java platform is a rich and powerful platform, complete with a rich and powerful security mechanism, but sometimes understanding it and how it works can be daunting and intimidating, and leave developers more »The Busy Java Developer's Guide to Concurrency (Part 2: Concurrency)
Java's threading capabilities have been a part of the Java platform since its inception, yet for many Java developers, using Threads still remain a dark and mysterious art, and synchronization beyond the use of the "synchronized" keyword is almost unknown more »The Busy Java Developer's Guide to Concurrency (Part 1: Threads)
Java's threading capabilities took a serious turn for the better with the release of Java5, thanks to the incorporation of the java.util.concurrent packages, a set of pre-built components for thread pooling and execution, synchronization, and more. more »The Busy Java Developer's Guide to Performance and Scalability
Wondering why your enterprise Java app just... more »The Busy Java Developer's Guide to Native Code
As much as the Java Virtual Machine and libraries provide a comfortable womb in which to write code, moments appear in every Java developer's life when they just have to call down to code that exists at the native, C-executable, level. Java provides a sta more »The Busy Java Developer's Guide to Monitoring
Crashes? Outages? Slow response? more »The Busy Java Developer's Guide to Hacking with the JDK
Ever since its 1.1 release, the Java Virtual Machine steadily becomes a more and more "hackable" (configurable, pluggable, customizable, choose your own adjective here) platform for Java developers, yet few, if any, Java developers take advantage of it. T more »The Busy Developer's Guide to Scala
Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files. more »The Busy Java Developer's Guide to Scala: Objects
Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files. Sporting the usual object-oriented concepts as cl more »The Busy Java Developer's Guide to Scala: Scala + Services
Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files. Sporting the usual object-oriented concepts as cl more »The Busy Java Developer's Guide to Collections
For so many Java developers, the java.util.* package consists of List, ArrayList, and maybe Map and HashMap. more »The Busy Java Developer's Guide to Advanced Platform Security
So you know the platform security model, and now you want to use it in new and interesting ways, like creating a custom Policy implementation, a custom Permission, or create a custom security context in which code will execute. Perhaps you even wish more »The Busy Java Developer's Guide to Java7
Even though the Java 7 JSR has yet to be formed, some interesting things are beginning to emerge from Sun about what Java7 may include when its formal release contents are finally made public. more »The Busy Java Developer's Guide to the OpenJDK
With the release of the OpenJDK source code, Java developers have been given a unique opportunity to peer inside the hood of the JVM, see what's there, and how Java code actually executes. more »
By Ted Neward
Thanks to the plateau of per-chip performance increases and the resulting need to work better with multi-core CPUs, the relative difficulty of mapping user requirements to general-purpose programming languages, the emergence of language-agnostic "virtual machines" that abstract away the machine, the relative ceiling of functionality we're finding on the current crop of object-oriented languages, and the promise and power of productivity of dynamically-typed or more loosely-typed languages, we're about to experience a renaissance of innovation in programming languages.
Come hear why this is, and what practicing programmers need to do in order to ride the forefront--instead of the trailing edge--of this new wave in computer science.
By Ted Neward
Bugs? We all know your code has no bugs, but someday, you're going to find yourself tracking down a bug in somebody else's code, and that's when it's going to be helpful to have some basic ideas about bug-tracking in your toolbox. Learn to make use of the wealth of tools that the Java Standard Platform makes available to you--tools that your IDE may not know exist, tools that you can make use of even within a production environment.
Learn to use jdb, jconsole, jps, jstat, and other tools to identify and squash software defects that just won't reveal themselves during development. Then, just in case those tools aren't enough for you, we'll look at how to write your own, special-purpose tools using the same technology backplane.
By Ted Neward
If you've never used Reflection (java.lang.reflect), you don't know what you're missing. In this presentation, we'll take a code-first, soup-to-nuts look at the Java Reflection APIs, from how to examine the class metadata that Reflection provides, to using annotations to enhance that metadata with your own information, even through the use of Java Dynamic Proxies to create flexible object "interceptors" that can layer services in front of ordinary method calls with nothing more complicated and an interface and a factory.
For beginning to intermediate Java developers who've not used Reflection or Dynamic Proxies before.
By Ted Neward
If you've ever gotten a ClassCastException and just knew the runtime was wrong about it, or found yourself copying .jar files all over your production server just to get your code to run, then you probably find the Java ClassLoader mechanism to be deep, dark, mysterious, and incomprehensible. Take a deep breath, and relax--ClassLoaders aren't as bad as they seem at first, once you understand a few basic rules regarding their operation, and have a bit more tools in your belt to diagnose ClassLoader problems. And once you've got that, and hear about ClassLoaders' ability to run multiple versions of the same code at the same time, and to provide isolation barriers inside your application, or even compile code on the fly from source form, you might just find that you like ClassLoaders after all... maybe.
For a beginning to intermediate Java audience.
By Ted Neward
Permissions, policy, SecurityExceptions, oh my! The Java platform is a rich and powerful platform, complete with a rich and powerful security mechanism, but sometimes understanding it and how it works can be daunting and intimidating, and leave developers with the basic impression that it's mysterious and dark and incomprehensible. Nothing could be further from the truth, and in this presentation, we'll take a pragmatic, code-first look at the Java security platform, including Permissions, the SecurityManager and its successor, AccessController, the Policy class and policy file syntax, JAAS, and more.
For an intermediate-level audience.
By Ted Neward
Java's threading capabilities have been a part of the Java platform since its inception, yet for many Java developers, using Threads still remain a dark and mysterious art, and synchronization beyond the use of the "synchronized" keyword is almost unknown.
In this talk, we'll explore the Java "monitor" concept, and how a monitor isn't quite the same thing as a lock from other concurrency systems. We'll see how monitors can be used to perform signalling across threads, and then how the new java.util.concurrent API (introduced in Java 5) can be used to simplify the same sorts of tasks that used to require deep knowledge of the synchronized keyword. Finally, we'll answer that age-old question, "Why did the multithreaded chicken cross the road?"
Prerequisite: The Busy Java Developer's Guide to Concurrency (Part 1: Threads)
By Ted Neward
Java's threading capabilities took a serious turn for the better with the release of Java5, thanks to the incorporation of the java.util.concurrent packages, a set of pre-built components for thread pooling and execution, synchronization, and more.
In this presentation, we'll explore the Thread API, the Java threading model beneath it, and the enhancements made in Java5 to make it easier for Java code to walk and chew gum at the same time.
By Ted Neward
Wondering why your enterprise Java app just... sucks? Trying to figure out why you can't get more than 10 concurrent users online at the same time? Looking for ways to try and spot the slowdowns and ways to fix them?
In this talk, we'll look at the various things that can occur in an enterprise Java app (from the smallest web site to the largest multi-resource environment) to make your Java apps perform and scale less well than they should, and how you can work to correct them. We'll examine a variety of broad concepts to apply in architecture and design, and examine what factors make an enterprise application slow, then use a variety of tools to figure out how to remedy them.
By Ted Neward
As much as the Java Virtual Machine and libraries provide a comfortable womb in which to write code, moments appear in every Java developer's life when they just have to call down to code that exists at the native, C-executable, level. Java provides a standard API for doing this--Java Native Interface--but its use is at once both darkly mysterious and... well... painful.
In this presentation, we'll look at the basics of JNI: how to write a Java native method, how to call back into the JVM from within native code, and how to create an instance of the JVM from within native code (using what JNI calls the JNI Invocation API). Next, we'll discuss a new library for calling out to native code, JNA (Java Native API), which uses annotations to simplify the process. Finally, we'll also look at JACE, a C++ template API that makes working with JNI much simpler.
By Ted Neward
Crashes? Outages? Slow response? We all know that it's never your code that causes these things, but for some reason those pesky system administrators still insist on paging you at 4AM to come in and fix those problems, anyway. For some reason, they just keep expecting you to support this thing, even after QA said it was OK!
In this presentation, we'll talk about some of the reasons why monitoring in a production application is so important, and why it's not just a system administrator concern. Next, we'll talk about some simple monitoring facilities that don't require any new APIs or new libraries, yet still deliver some useful monitoring capabilities to developers, sysadmins and management. Next, we'll look at using JMX tools to keep an eye on what's going on inside of the JVM itself and/or your applications server, then how to use JMX to create your own points of monitoring interest. Finally, we'll look at how system administrators can build their own monitoring tools by using languages like Groovy and/or JRuby as the ultimate JMX client. And, for the really hard-core, we'll even take a look at how to use tools like JVMTI and/or java.lang.instrument to write custom monitoring agents.
By Ted Neward
Ever since its 1.1 release, the Java Virtual Machine steadily becomes a more and more "hackable" (configurable, pluggable, customizable, choose your own adjective here) platform for Java developers, yet few, if any, Java developers take advantage of it. Time to take the kid gloves off, crack open the platform, and see what's there. Time to play.
In this presentation, we'll examine several of the "hackable" customization points inside the JVM: the boot classpath, allowing us to add or modify existing JDK classes without violating the license agreement; the JNI Invocation API, allowing us to create custom Java launchers to establish an environment for the JVM that corresponds to exactly the way we want it; or even replace core Java classes with our own versions. Innocents beware--we're a long way from "Hello, Java". (Attendees should have some familiarity with C/C++ code and native build practices to get the most out of this talk.)
By Ted Neward
Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files.
Sporting the usual object-oriented concepts as classes and inheritance, Scala also offers a number of powerful functional features, such as algebraic data types, immutable objects by default, pattern matching, closures, anonymous functions and currying, and more.
Combined with some deep support for XML generation and consumption, Scala offers Java programmers an opportunity to write powerful programs with concise syntax for a new decade of Java programming.
By Ted Neward
Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files. Sporting the usual object-oriented concepts as classes and inheritance, Scala also offers a number of powerful functional features, such as algebraic data types, immutable objects by default, pattern matching, closures, anonymous functions and currying, and more. Combined with some deep support for XML generation and consumption, Scala offers Java programmers an opportunity to write powerful programs with concise syntax for a new decade of Java programming.
In this presentation, we focus on the parts of Scala that feel comfortable to the traditional object-oriented developer, and the various ways that Scala improves the object-oriented experience.
By Ted Neward
Scala is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the Java Virtual Machine as standard "dot-class" files. Sporting the usual object-oriented concepts as classes and inheritance, Scala also offers a number of powerful functional features, such as algebraic data types, immutable objects by default, pattern matching, closures, anonymous functions and currying, and more. Combined with some deep support for XML generation and consumption, Scala offers Java programmers an opportunity to write powerful programs with concise syntax for a new decade of Java programming.
In this presentation, we take the Scala language, its support for XML, it's immutable and functional approaches, and build a simple XML service with it, no JAX-WS needed (or wanted). Deploying the service as a simple servlet, we show it being consumed from a traditional JAX-WS service client, and from a more "hip" REST approach.
By Ted Neward
For so many Java developers, the java.util.* package consists of List, ArrayList, and maybe Map and HashMap. But the Collections classes are so much more powerful than many of us are led to believe, and all it requires is a small amount of digging and some simple exploration to begin to "get" the real power of the Collection classes.
In this presentation, Java developers will see the basic breakdown of the Collection API designs, the relationship of the interfaces to the implementations, how to create a new Collection implementation, and how the new Collections introduced as part of JSR-166 (the concurrency JSR) and Java6 make their programming lives easier.
By Ted Neward
So you know the platform security model, and now you want to use it in new and interesting ways, like creating a custom Policy implementation, a custom Permission, or create a custom security context in which code will execute. Perhaps you even wish to make certain objects accessible only to those with the right permissions, or cryptographic key. Nothing could be easier, despite Java security's reputation as a dark and arcane place.
In this presentation, we'll pick up where the "Platform Security" talk leaves off, and demonstrate how to engage the security model of the JVM at a much deeper level, regardless of your favorite programming language: Java, JRuby, Groovy, Scala, ....
Prerequisite: The Busy Java Developer's Guide to Platform Security
By Ted Neward
Even though the Java 7 JSR has yet to be formed, some interesting things are beginning to emerge from Sun about what Java7 may include when its formal release contents are finally made public.
In this presentation, we'll examine some of the forthcoming details, including some of the JSR-166 "add-ons" like the Fork/Join framework, some of the proposals for extensions to the JVM to support dynamic languages, and the so-called "closures" proposals circulating around.
By Ted Neward
With the release of the OpenJDK source code, Java developers have been given a unique opportunity to peer inside the hood of the JVM, see what's there, and how Java code actually executes.
In this presentation, we'll talk about how to get the OpenJDK codebase, how to compile it (for both Windows and Linux systems), and point out some of the more interesting aspects of the JDK source base. Developers will walk away with a deeper appreciation for exactly what happens when they run Java code. Innocents beware--we're a long way from "Hello, Java" with this one.
Ted's NFJS Schedule
Books
by David Stutz, Ted Neward, and Geoff Shilling
- Microsoft's Shared Source CLI (code-named "Rotor") is the publicly available implementation of the ECMA Common Language Infrastructure (CLI) and the ECMA C# language specification. Loaded with three million lines of source code, it presents a wealth of programming language technology that targets developers interested in the internal workings of the Microsoft .NET Framework, academics working with advanced compiler technology, and people developing their own CLI implementations. The CLI, at its heart, is an approach to building software that enables code from many independent sources to co-exist and interoperate safely. Shared Source CLI Essentials is a companion guide to Rotor's code. This concise and insightful volume provides a road map for anyone wishing to navigate, understand, or alter the Shared Source CLI code. This book illustrates the design principles used in the CLI standard and discusses the complexities involved when building virtual machines. Included with the book is a CD-ROM that contains all the source code and files.
by Ted Neward
- Java, one of the most popular programming languages, can be used on servers in a true distributed environment. This book demonstrates how to take full advantage of Javas power on servers by using current technologies such as Java Servlets, Java Web server, and JNDI. It also covers established technologies that are relevant to successful server application development such as Java Database Connectivity, Remote Method Invocation, JavaBeans, and CORBA. Transaction processing, distributed objects, and business application development are part of the books enterprise development perspective.
by Peter Drayton, Ben Albahari, and Ted Neward
- Designed as a primary reference to be used daily, C# in a Nutshell also includes the essential background information to become productive quickly. Not a "how-to" book or a rehash of Microsoft's documentation, this book goes to the source of the language and APIs to present the content in a way that professional programmers will value above all other books. C# in a Nutshell is a comprehensive language reference and also presents the .NET Framework using C# examples. Additionally, it is an extensive and quick reference to the API, featuring the System namespace. Particularly useful are the many figures and tables that present the main features of the namespace. Every once in a while, a book becomes the de-facto standard for a technology, operating system, or programming language--which is exactly what C# in a Nutshell aims to do in a single straightforward and easy-to-use volume.
by Peter Drayton, Ben Albahari, and Ted Neward
- No matter how good your reference books are, you can't always stop to thumb through hundreds of pages to find the piece of information you need. Your answer is the C# Language Pocket Reference. Concise and easy to use, this handy pocket guide to C# comes from the authors of C# in a Nutshell, and is a must-have quick reference for anyone implementing this new object-oriented language. The C# Language Pocket Reference offers the convenience of a quick reference in a format that will actually fit in your pocket. The book includes a guide to C# language elements, a brief overview of the Framework Class library, a cross-reference for namespaces and assemblies, a list of compiler syntax and switches, a regular expressions reference guide, and more.
by Ted Neward
-
"With this book, Ted Neward helps you make the leap from being a good Java enterprise developer to a great developer!"
—John Crupi, Sun Distinguished Engineer coauthor, Core J2EE PatternsIf you want to build better Java enterprise applications and work more efficiently, look no further. Inside, you will find an accessible guide to the nuances of Java 2 Platform, Enterprise Edition (J2EE) development. Learn how to:
- Use in-process or local storage to avoid the network, see item 44
- Set lower isolation levels for better transactional throughput, see item 35
- Use Web services for open integration, see item 22
- Consider your lookup carefully, see item 16
- Pre-generate content to minimize processing, see item 55
- Utilize role-based authorization, see item 63
- Be robust in the face of failure, see item 7
- Employ independent JREs for side-by-side versioning, see item 69
Ted Neward provides you with 75 easily digestible tips that will help you master J2EE development on a systemic and architectural level. His panoramic look at the good, the bad, and the ugly aspects of J2EE development will address your most pressing concerns. Learn how to design your enterprise systems so they adapt to future demands. Improve the efficiency of your code without compromising its correctness. Discover how to implement sophisticated functionality that is not directly supported by the language or platform. After reading Effective Enterprise Java, you will know how to design and implement better, more scalable enterprise-scope Java software systems.
by Peter Drayton, Ben Albahari, and Ted Neward
-
The heart of C# in a Nutshell is a succinct but detailed reference to the C# language and the .NET types most essential to C# programmers. Each chapter in the API reference begins with an overview of a .NET namespace and a diagram of its types, including a quick-reference entry for each type, with name, assembly, category, description, member availability, class hierarchy, and other relevant information, such as whether the type is part o the ECMA CLI specification. Newly updated for .NET Framework version 1.1, the second edition also adds a CD that allows you to integrate the book's API Quick Reference directly into the help files of Visual Studio .NET 2002 & 2003, giving you direct access to this valuable information via your computer. In addition to the API reference section, this book includes:
- An accelerated introduction to the C# language and the .NET Common Language Runtime
- A tutorial section on using C# with the core classes of the .NET Framework Class Library to perform common tasks such as manipulating strings, I/O, and interacting with legacy components
- Comprehensive language and tool reference chapters, including a C# syntax summary, a list of XML documentation tags, and a guide to command-line tools that ship with Visual Studio .NET and the .NET Framework
- Appendixes with reference tables for regular expression syntax, format specifiers, a C# keyword glossary, namespace/assembly cross-reference, and a type and member index for determining in which type a method or field is defined.