Ted Neward's Home Page
Surface mail: Ted Neward, 2103 Pollock Ct, Davis, CA, 95616 |
Voice: 530-400-2955 |
E-Mail: tneward@javageeks.com |
resume |
shortbio |
bookmarks
Who I Am
I'm a C++, Java and .NET instructor, architect and mentor,
living and working in the Northern California (specifically, Sacramento--Go
Kings!) area. My professional interests center around software, specifically
enterprise server-side development.
What I Do
I offer the services of an experienced architect and mentor who's "been
there, done that, bought the T-shirt" for just about every kind of software
development project--in-house to shrink-wrap, handheld (PalmPilot) to headless
(enterprise systems), C to Java and beyond (C#). In particular, I can
- lead code reviews in a gentle, non-confrontational manner
- assist/consult on design of software systems
- run discussion/"study" groups on software topics
- mentor programmers of all skill levels
I'm currently an instructor (contract basis, about 2 weeks per month) with
DevelopMentor, quite possibly the coolest
place to work on the planet. I also contract and consult to a variety of firms
in the Sacramento area. If you're in the area, and you'd like me to come work
with your developers and teach them the latest in Java and .NET technologies,
contact me. Hard to differentiate me
from any other technophile? Hear what others
have to say about working with me, reading my book, learning from me, and hearing
me speak.
Current Research
- Papers
-
- Using JNDI to encapsulate retrieval of business objects. JNDI, the Java
Naming and Directory Interface, simplifies the process of acquiring any
named resource, regardless of its backing store--RMI Registry, CORBA Naming
Service, file system, whatever. I want to build a JNDI Provider to act as an
API for retrieving business objects. I think JNDI is probably one of the most
underrespected APIs in the entire J2SE suite of APIs.
- Using AspectJ to offer some of the
same facilities offered by an EJB system. Metaobject programming, I'm
convinced, will be the Next Big Thing, especially for enterprise systems.
- Generative Programming in Java. Several systems (not just AspectJ, above)
seem to offer the kinds of metaobject capabilities that EJB and a runtime
interception model provide, without the huge complexity overhead. Specifically,
I'm looking at Javassist and OpenJava, both from Shigeru Chiba, of the
University of Tsukuba in Japan, as ways to achieve this.
- Using Jini to create a component-oriented enterprise model. I want to
make use of Jini's Discovery and Join protocols and offer an EJB-like
componentry model while taking advantage of Jini's self-healing networking
ability.
- JAAS for enterprise systems. Lots of enterprise systems need to provide
selective access to parts of the system, based on userids and passwords
stored in a database; I want to use JAAS and standard Java2 Security models
to provide those capabilities. (Note: several OpenSource projects have
also gone this route, most notably jBoss,
the EJB container. Part of my research, however, is to determine how feasible
it would be for this mechanism to be exposed to domain programmers, rather
than buried in the plumbing.)
- Use Javadoc for more than just documentation. The Javadoc tool permits
the execution of small integrated framework "pieces" they call "doclets". I
want to create a doclet that will run within Javadoc, parse out special
"@attribute" tags, and insert customized Attribute-deriving classes into a
compiled .class file. Sound familiar? It's exactly the same facility .NET
supports directly, in "custom attributes". What's more, with it, I want to
provide the same kind of flexibility that .NET attributes offer--the ability
to add custom "decorations" to Java class metadata, extractable at runtime
(via some utility classes/methods). (Note: again, some folks, most notably
Rickard Oberg, again of jBoss fame, have gone down this road. In Rickard's
case, he created the EJBDoclet, to allow for expression of deployment descriptors
from Javadoc Doclets.) Note: Eureka! I've got a working model; if
you're interested in seeing the code before I finish writing the paper,
mail me
and I'll send you a drop.
- JMX from servlets. JMX, the Java Management eXtensions API, is an API
designed to allow administration and management (as well as some monitoring
capabilities) of Java components. Servlets are currently the most popular
form of server-side Java component--it's natural that we should admin and
monitor servlets using JMX.
- Books
-
- Effective Enterprise Java, from Addison-Wesley.
- Projects
-
- JSR-111. As a member of the JSR-111 Expert Group, I'm pursuing
discussions regarding a standard "Java Services Framework".
- Reinvent GJAS. After looking back at the Generic Java Application
Server I wrote for the SBPJ book,
and reviewing a few other things coming down the pike in the Java
world, I've decided I'd really like to reinvent the way I did things for
that API--as it stands now it's got too many warts, IMHO. I want to
- Move to a cleaner deployment approach. Specifically, integreate the
PluginClassLoader (or something similar) into the system. Use manifests
inside jar files to indicate which services to load, that sort of thing.
- Enable clustering. Right now, adding clustering support to the GJAS
implementation would be difficult.
- Open-Source it. Get it to a point where the basic architecture is in
place, then turn it loose on the open-source community.
- Bring it in line with some JSRs. Specifically, the Daemon API JSR and
a few others that are still in transit.
- Integrate it with JMX. JMX (Java Management Extensions) are the way to
go for management and monitoring of Java apps--make GJAS fall into line on
this, as well.
If you have a burning desire to get involved on
this, feel free to mail me, but
be warned--this is a low-priority item for me, and I may not get back to you
real quickly.
- Java Assemblies. .NET has a really good componentization story in
their "assembly" concept. Steal it and bring it over to Java, probably based
around .jar files.
- Java .EXE binder. .NET is able to produce .EXE files from
compiled C#/VB/JScript/ManagedC++ simply by binding the IL assembly inside a
Win32 PE/COFF file with a simple entry point stub that creates the CLR host,
then tells the host to execute the embedded IL inside the EXE. I want
to reproduce this for Java: give me a .jar file, I'll give you a Win32
executable containing the startup code to create the JVM, plus embed the
actual Java bytecode inside the executable. When I finish this, I'll
open source it, probably through SourceForge.
Summary
- Books
-
- Papers
-
- Professional Involvement
-
- Java Instructor, DevelopMentor; I
teach Essential Java, Intensive Java, Essential Java Web
Development, Essential.NET, Essential RMI, Guerilla
Java, Intensive .NET and Guerilla .NET for
DevelopMentor; contact them to have me
teach the class at your site. (If you're a former student of mine, and
you're looking for the in-class demos, look
here. As requested, I've also
finally written up a reading list of books.)
- Founder of the Sacramento
Patterns Group
- Monthly technical presenter at the Sacramento
Java User's Group
- Former founding member of the NetDynamics
"TeamND" developer support group (not that NetDynamics exists anymore....)
- Speaking Engagements
-
This page looks cluttered in Any Browser
Format shamelessly copied from that of
Doug Lea's Home Page, whom I respect
deeply and highly recommend reading his book, Concurrent Programming in Java,
2nd Edition.