![]() | ||
|
|
Java SE (Standard)Java SE is the client-side Java development platform for the PC. It was the first Java programming development platform (originally JDK). It includes the fundamental API such as Applets, Threads, Networking, RMI, Servlets, JDBC, JFC Swing, AWT, JFC 2D, Java Media API, JavaBeans and more.Review/Preview: 2006 and 2007 in Java By Chris Adamson 2006 will be remembered as the year that Sun open-sourced Java under the GPL, that EJB 3.0 finally shipped, and that Google surprised everyone with its Google Web Toolkit. But how will history record the results of these events? For the 2006 year-ender, ONJava editor Chris Adamson looks at the year's events through the lens of how they may play out in 2007. Dec. 20, 2006 Java Generics and Collections: Evolution, Not Revolution, Part 2 By Maurice Naftalin, Philip Wadler In the second part of an excerpt from Java Generics and Collections, authors Maurice Naftalin and Philip Wadler continue their study of how to adopt Java 5.0 generics in a measured, sustainable fashion. Having shown how to genericize a library while leaving the library in legacy mode, they now present three approaches to the opposite scenario: genericizing a client that uses a non-genericized library. Nov. 29, 2006 Java Generics and Collections: Evolution, Not Revolution, Part 1 By Maurice Naftalin In this excerpt from Java Generics and Collections, authors Maurice Naftalin and Philip Wadler show how to make the switch to Java 5.0 generics, not by expecting you to flip a switch across your whole code base, but by having you gradually work generics into your code while maintaining compatibility. Nov. 22, 2006 Eclipse RCP: A Platform for Building Platforms By Wayne Beaton Where do you start when building a Java desktop application? All Java gives you by default is public static void main (String[]); it's up to you from there. Eclipse's Rich Client Platform (RCP) offers a tested design, commonly-needed widgets, a standardized component model, pervasive extensibility, and more. Wayne Beaton has an introduction to get you up to speed with RCP-based development. Aug. 23, 2006 Ant 1.7: Using Antlibs By Kev Jackson Most Java developers use Ant to do builds and are familiar with its core tasks. But Ant's tasks tend toward an undesirable coupling: everything important had to be a core task because it was hard to distribute new plug-in tasks. Fortunately, Ant 1.7's new antlibs feature makes it much easier to distribute and use new Ant tasks. In this article, Kev Jackson shows you how to use, write, bundle, and test antlibs. Aug. 9, 2006 Hacking Swing: A JDBC Table Model By Chris Adamson, Joshua Marinacci Databases have tables, Swing has tables. Why should it be a hassle to bring the two together? In this excerpt from Swing Hacks, authors Joshua Marinacci and Chris Adamson show you how to put some JDBC behind your table model, and bring your database to life in Swing. Nov. 23, 2005 Hibernate for Java SE By Jason Lee For many, Hibernate goes hand in hand with Java EE as part of their enterprise development strategy. But what if you need access to your data access objects outside of the EE container? Jason Lee offers some strategy for getting and using a Hibernate session from Java SE code. Nov. 16, 2005 Hacking Swing: Translucent Windows By Chris Adamson, Joshua Marinacci All Java windows are absolutely rectangular, so you can forget about creating a nice Winamp-like window for your Swing app, right? Wrong. In this excerpt from Swing Hacks, authors Joshua Marinacci and Chris Adamson show how you can use some imaging trickery to create arbitrarily shaped windows with Swing. Nov. 9, 2005 JBoss Cache as a POJO Cache By Ben Wang Typical in-memory cache systems can trip you up in ways you don't expect, from mangled object relationships to overly expensive serialization operations. A POJO cache offers a simpler, lower-maintenance alternative. Ben Wang uses JBoss Cache to show how POJO caches work. Nov. 9, 2005 Diagnostic Tests with Ant By Koen Vervloesem Determining what's gone wrong with your software--source or binary--in a remote location is no simple task. Before taking a call and walking the user through error-prone troubleshooting, why not collect information about the user's system and the application files? Koen Vervloesem shows how you can do this with Ant. Oct. 12, 2005 Introduction to the ASM 2.0 Bytecode Framework By Eugene Kuleshov J2SE 5.0 made major changes to the language, and version 2.0 of the ASM bytecode manipulation toolkit is well-suited to handle them. In this article, Eugene Kuleshov shows how ASM 2.0 makes working with bytecode easier, and even offers an example of how to map the external dependencies in an arbitrary .jar file. Aug. 17, 2005 Eclipse Plugins Exposed, Part 3: Customizing a Wizard By Emmanuel Proulx Emmanuel Proulx's series on Eclipse plugin development continues by showing how to put together a useful data model and a wizard GUI. Jul. 27, 2005 Domain Searching Using Visitors By Paul Mukherjee Modern applications typically require domain searching functionality--the ability to search for data within the context of the application domain. In this article, Paul Mukherjee describes an approach to domain searching using the Visitor pattern, and explains its advantages. Jun. 1, 2005 Managing Component Dependencies Using ClassLoaders By Don Schwarz Use of the Class-Path entry within a JAR file's manifest can help you manage external dependencies--to a point. Once you start using multiple JARs that need incompatible versions of external JARs, problems quickly ensue. As Don Schwarz shows, you can get out of this problem by using your own class loader to manage the dependencies. Apr. 13, 2005 Flexible Event Delivery with Executors By Andrew Thompson Event-handling is critical to any GUI application, and many developers know the hazards of making a method call to unknown or poorly behaved code from the event-dispatch thread. J2SE 5.0's concurrency utilities offer more fine-grained control over how code executes. Andrew Thompson applies that to offer better ways to handle events. Mar. 23, 2005 Building Modular Applications with Seppia By Lorenzo Puccetti Isn't object-oriented programming supposed to be about code reuse? The Seppia framework encourages reuse by allowing you to combine functionality collected in multiple .jar files, stitching the behavior together with JavaScript. Lorenzo Puccetti has an introduction to this interesting framework. Mar. 16, 2005 Reducing Upgrade Risk with Aspect Oriented Programming By Stephen B. Morris Upgrading code in the field is usually frowned upon, if not prohibited outright, because of the risk and expense of pushing code changes through a release cycle. But could you just insert the tiny bit of code you need with AOP? Stephen B. Morris looks at how careful design and separation of responsibilities can make this less risky. Mar. 16, 2005 Aspect-Oriented Annotations By Bill Burke Aspect-Oriented Programming (AOP) and attributes are two leading-edge programming concepts, each with typical applications. By combining them, using attributes to indicate where AOP code should execute, you can effectively declare new Java syntax. Bill Burke introduces this new technique. Mar. 2, 2005 Bitwise Optimization in Java: Bitfields, Bitboards, and Beyond By Glen Pepicelli Flipping bits on and off is the lowest level of computing, and most Java developers are totally isolated from it. But maybe they shouldn't be. In this article, Glen Pepicelli introduces the idea of bitsets--ints and longs whose bitwise representation are the data you're interested in--and how they can be used with mathematical and logical operators to write faster code. Feb. 2, 2005 Internals of Java Class Loading By Binildas Christudas When are two classes not the same? When they're loaded by different class loaders. This is just one of many curious side effects of Java's class-loading system. Binildas Christudas shows how different class loaders relate to one another and how (and why) to build your own custom class loader. Jan. 26, 2005 Validating Objects Through Metadata By Jacob Hookom Metadata, in the form of J2SE 5.0's annotation, allow you to mark up your your code with declarative information, and then use reflection to pull out those annotations at runtime and use them. Jacob Hookom shows how these techniques can be used to validate input to your application. Jan. 19, 2005 A Distributed Discussion with Elliotte Rusty Harold By Chris Adamson In this interview, Java Network Programming, 3rd Edition author Elliotte Rusty Harold discusses the improvements and hazards of networking in Java, as well as the evolution of Java itself. Dec. 15, 2004 URLs and URIs, Proxies and Passwords By Elliotte Rusty Harold Java networking is seldom as simple as it first seems. In this excerpt, one of a series from Java Network Programming, 3rd Edition, Elliotte Rusty Harold shows how to encode and decode URLs, work with URIs, use multiple proxy servers, query servers with HTTP GET, and use password-based authentication. Dec. 8, 2004 Dynamic Delegation and Its Applications By Lu Jian Proxy, introduced in Java 1.3, offers an interesting way to provide an interface's implementation at runtime, but there's more that can be done. Lu Jian shows how bytecode manipulation can be used to provide dynamic delegation, allowing you to provide runtime implementations of interfaces, abstract classes, and even concrete classes. Nov. 17, 2004 Create and Read J2SE 5.0 Annotations with the ASM Bytecode Toolkit By Eugene Kuleshov Continuing his examination of the ASM bytecode-manipulation toolkit, Eugene Kuleshov shows how ASM can be used to access J2SE 5.0 attributes, even from earlier JVM versions that don't support attributes. Oct. 20, 2004 Advanced Synchronization in Java Threads, Part 1 By Scott Oaks J2SE 5.0 introduces sophisticated new options for coordinating multiple threads. In this excerpt from Java Threads, 3rd Edition, Scott Oaks and Henry Wong look at new scheduling strategies represented by the java.util.concurrent package. Oct. 20, 2004 Bridging the Gap: J2SE 5.0 Annotations By Kyle Downey Annotations, a means of providing your own metadata for your code, are among the major features of J2SE 5.0, but you don't have to move to 5.0 to use them. Kyle Downey introduces annotations and their implementation in several Java 1.4-compatible forms. Oct. 6, 2004 Reporting Application Errors by Email By Sean C. Sullivan Even if your application logs an error to a local file, the developer doesn't know there's a problem until a user notices it and sends the log file back. It can be more useful for apps to email their own error messages back. And as Sean C. Sullivan explains, it's not hard to do with either log4j or java.util.logging. Sep. 29, 2004 Monitoring Local and Remote Applications Using JMX 1.2 and JConsole By Russell Miles The latest release of Java, J2SE 5.0 (codenamed Tiger), formally adds support for the Java Management Extensions (JMX) 1.2. Russ Miles walks you through how to use the JMX support in J2SE 5.0, including the new JConsole application, to monitor and manage your own applications both locally and remotely. Sep. 29, 2004 JDemo: Interactive Testing Refactored By Markus Gebhard The nature of GUI development doesn't lend itself to test-oriented methodologies very well. But that doesn't mean you shouldn't test your components! Markus Gebhard has an alternative: JDemo, a tool patterned after JUnit, for displaying and verifying GUI components. Sep. 8, 2004 Building Highly Scalable Servers with Java NIO By Nuno Santos For massive, high-performance systems, thread-per-client systems may not scale because of the expense in switching thread contexts. Sometimes, as Nuno Santos explains, you have to go lower-level. In this article, he shows how his team used multiplexing features in java.nio and a Swing-like event dispatcher to achieve extremely high performance. Sep. 1, 2004 An Introduction to IKVM By Avik Sengupta Java and .NET are two different worlds, but they can live within one process with IKVM. This "JVM for .NET" allows .NET (or Mono) to leverage Java code, and vice versa. Avik Sengupta provides an introduction to this important new environment. Aug. 18, 2004 Peeking Inside the Box: Attribute-Oriented Programming with Java 1.5, Part 2 By Don Schwarz Continuing an investigation into generating update messages without explicitly coding them, Don Schwarz tries combining some new approaches, including thread sampling and bytecode manipulation. Jul. 21, 2004 A Generic MVC Model in Java By Arjan Vermeij The Model View Controller (MVC) pattern often leads to large blocks of essentially similar code in various classes; exactly the kind of detail that can be abstracted away with Java 1.5's generics. Arjan Vermeij shows how this can be accomplished. Jul. 7, 2004 Peeking Inside the Box: Attribute-Oriented Programming with Java 1.5, Part 1 By Don Schwarz Don Schwarz wants to add a status indicator to his Swing application, but the straightforward way turns out to be inelegant and limiting. In this first part of "Peeking Inside the Box," he considers code generation and bytecode manipulation as alternatives. Jun. 30, 2004 Data Models for Desktop Apps By Andrei Cioroianu Andrei Cioroianu shows how to develop data models for Java desktop applications and how JavaBeans and the Model-View-Controller (MVC) pattern can make your code more maintainable and reusable. Jun. 2, 2004 Template-Based Code Generation with Apache Velocity, Part 2 By Giuseppe Naccarato Giuseppe Naccarato's investigation of code generation continues with a look at using a language-agnostic model to represent the relationships of classes, attributes, and operations in the code to be generated. Does it work better than something platform-specific? The answer is surprising. Jun. 2, 2004 SSS (Small, Simple, Safe) By Alper Coskun Teaching Java is complicated both by the language's syntax and the huge number of classes in its standard libraries. According to Alper Coskun, one solution might be "Small Simple Safe" (SSS), which tries to alleviate this by giving the user an opportunity to create and relate objects in a very simple GUI. May. 26, 2004 Prototyping Desktop Applications By Andrei Cioroianu Does J2SE provide the functionality your application needs? A great way to find out is by developing a prototype, tackling the hard parts first to see if they can be made to work. Andrei Cioroianu employs Java2D and Swing in developing a prototype image-annotation application. Apr. 28, 2004 Declarative Programming in Java By Narayanan Jayaratchagan JSR-175 introduces Java annotations, a means of attaching metadata to your Java classes. Narayanan Jayaratchagan looks at how annotations work in J2SE 1.5 and the many ways in which they can be used. Apr. 21, 2004 BlackMamba: A Swing Case Study By Ashwin Jayaprakash It's one thing to learn the bits and pieces of a Swing GUI -- how to create a model and wire it up to a JTable or JTree. It's quite another to think through and develop a full-blown application. Ashwin Jayaprakash uses an email client, BlackMamba, to show how the pieces of a Swing application fit together. Mar. 10, 2004 Java Desktop Development By Andrei Cioroianu Java developers can choose between three primary GUI toolkits for desktop applications: AWT, Swing, and SWT. Andrei Cioroianu looks at the history, pros, and cons of each in this first article in a series on standalone Java development. Feb. 18, 2004 Introduction to Aspect-Oriented Programming By Graham O'Regan Aspect-oriented programming (AOP) offers the ability to overlay new functionality atop existing code not by rewriting and recompiling, but by adding "aspects" to the compiled code. Graham O'Regan has an introduction. Jan. 14, 2004 Regular Expressions in J2SE By Hetal C. Shah Java applications that perform text searching and manipulation using String and StringTokenizer classes often result in complex code, leading to a maintenance nightmare. Another alternative is regular expressions. Hetal Shah explains how to implement regular expressions using the java.util.regex package, and how it can make your code easier to write and maintain. Nov. 26, 2003Best Practices for Exception Handling By Gunjan Doshi Java's concept of exceptions and how they're used has led to controversy and, in some cases, bad programming practices. Gunjan Doshi seeks to lay down some best practices for using exceptions in Java. Nov. 19, 2003 Subverting Java Access Protection for Unit Testing By Ross Burton Ross Burton describes how to use reflection to subvert Java class-member access protection to improve unit testing, by accessing private and protected members as required. Nov. 12, 2003 SearchAssist: A Portable Search Engine in Java By Ashwin Jayaprakash While server-side Java solves many problems, it's not always available. Besides, there's more to a good UI than HTML can provide. Sometimes an applet can fit the bill. Ashwin Jayaprakash demonstrates a search engine applet designed for portability and power. Oct. 1, 2003 Readable Java 1.5 By Stephen Jungels Java 1.5 promises several exciting new features: an improved for loop, generics, and improved typing through variance. The proposed syntax doesn't impress everyone, though. Stephen Jungels proposes alternate syntaxes for the new features. Sep. 24, 2003 Making Media from Scratch, Part 2 By Chris Adamson QuickTime is a media creation API. It supports far more than just editing and playing movies -- you can create them, one frame at a time. Chris Adamson demonstrates how to build movies, frame by frame, and even animate still images. Aug. 27, 2003 Memoization in Java Using Dynamic Proxy Classes By Tom White Memoization, or caching previously computed values of functions, can speed up certain classes of problems. Java 1.3's dynamic proxy classes make it possible to write generic memoization routines. Tom White explores this technique and explains when and how it can improve your performance. Aug. 20, 2003 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||