Daily del.icio.us for February 23rd through February 25th

  • The Rise and Fall of Dynamic Languages | Ruby Zone – In this interview, Ruby programmer and consultant Rick DeNatale provides his perspective on the fall and rise of dynamic languages, including Smalltalk and Ruby. Rick#039;s work through the years has given him a unique and low-level perspective of what works and why.
  • DRY CRUD DAOs with iBatis – Gregg Bolinger – I blogged before about writing DRY CRUD DAOs using JPA. I was able to improve on that thanks to many comments from other users. So thanks for the tips. On a recent project we decided to go with iBatis and I wanted to see if it was possible to use the same methods that I use for JPA based DAOs.
  • 12 CSS Tools and Tutorials for Beautiful Web Typography | Web Design Ledger – Achieving beautiful typography with CSS on the web is no easy feat, and there are many limitations to what can done with type on the web. However, there are generous people out there that have taken the time to build tools and write tutorials to help you overcome these limitations and create websites with beautiful typography.
  • Strategies – The Index Funds Win Again – NYTimes.com – THERE’S yet more evidence that it makes sense to invest in simple, plain-vanilla index funds, whose low fees often lead to better net returns than hedge funds and actively managed mutual funds with more impressive performance numbers.
  • Red Hat debuts virtualization software – Red Hat Inc. today introduced an entire line of virtualization software aimed at disrupting current market leader VMware Inc.#039;s position by giving customers an open-source option for virtualizing their data centers.
  • State of the Art – Amazon.com’s Kindle Goes From Good to Better – NYTimes.com – With those caveats, the new Kindle edges even closer to the ideal of an e-book reader. The reading experience is immersive, natural and pleasant; the book catalog, while not yet complete, is growing and delivered instantaneously; and apart from the clicky keyboard (an unnecessary appendage 99.9 percent of the time), the design feels right.
  • Citrix to offer free XenServer; Takes shot at VMware | Between the Lines | ZDNet.com – Citrix on Feb. 23 will detail plans to offer free licenses to its XenServer virtualization application and team with Microsoft to swap support. Citrix and Microsoft will also extend their 20-year partnership into the virtualization market.

    In a nutshell, Citrix will work with Microsoft to provide system management, Citrix Essentials for Hyper-V. Microsoft’s System Center will support XenServer.

  • It’s official: Citrix aims to blow up enterprise virtualization pricing | Between the Lines | ZDNet.com – Citrix officially launched a free version of its XenServer and Essentials virtualization software in a move that is designed to take aim at VMware. Separately, Citrix extended its long-running partnership with Microsoft to cover virtualization.
  • 9 Must-Try Adobe AIR Apps for Better Productivity – With this new age of “application neutrality,” I wanted to take a brief look into some Adobe AIR apps you have to at least try. Each one is focused on increasing an area of productivity.
  • Application Development Trends – Sun Expands GlassFish into Web Platform – Sun Microsystems last week announced a new bundle of open source projects assembled around the GlassFish application server to create a quot;high-performance Web platform.quot;
  • Wikis and Wall Street: A Perfect Match? – By focusing on improving productivity and supporting mission-critical apps (but not touching customer and transaction data), wikis can be used to deliver major ROI without requiring integration with legacy systems or storing customer data outside the firewall.

Daily del.icio.us for January 4th through January 9th

Daily del.icio.us for December 17th through December 22nd

  • The busy Java developer’s guide to Scala: Scala and servlets – In this article in the The busy Java developer's guide to Scala series, Ted Neward begins a tour of Scala in the real world by examining how Scala can interact with the core Servlet API and perhaps even improve it a little.
  • FrontPage – Dropbox Wiki – The Dropbox Wiki is your designated resource for the more advanced features (and creative uses) that Dropbox has to offer. Like all wikis, this will be constantly changing, and we welcome any contributions you make.
  • Red Hat 3Q up 20 pct, but revenue below estimate – BusinessWeek – Red Hat Inc. on Monday reported a 20 percent increase in profit for the third quarter as budget-conscious companies opted for the software provider's open-source Linux operating system over more expensive proprietary systems.
  • Asia’s wounded giants | Suddenly vulnerable | The Economist – Asia’s two big beasts are shivering. India’s economy is weaker, but China’s leaders have more to fear
  • Management guru: Warren Buffett | Warren Buffett | The Economist – Buffett is known as “the Sage of Omaha”, after the town where he was born and where he has spent most of his life, and much is made of his small-town homespun values. He likes to play the ukulele and he plays bridge (with Bill Gates, among others) in his modest home in Omaha
  • JavaLobby’s Top 10 Articles of 2008 | Javalobby – As a way of looking back at how the year has been on JavaLobby, we've collected the top 10 most read articles. It paints a clear picture about what is important to you, and gives us some hints as to what we should be covering in 2009
  • Dustin’s Software Development Cogitations and Speculations: 2008: Year of the Java Persistence API – It appears that one of the most popular themes in Java development in 2008 has been the Java Persistence API (JPA). I base this statement on the recent announcements that JPA-focused articles appeared in the Top Ten lists of articles for both Oracle Technology Network (OTN) and JavaLobby.
  • Data Platform Insider : Ultimate guide for upgrading to SQL Server 2008 – Last week, our SQL Server engineering team in association with Solid Quality Mentors released an unprecedented 490-page free whitepaper called SQL Server 2008 Upgrade Technical Reference Guide that provides in-depth information on how to upgrade to SQL Server 2008
  • Scrum in under 10 minutes video | Agile Software Development – Hamid Shojaee from Axosoft published an excellent and funny video on the basics of Scrum. In under 8 minutes of animation Hamid describes most of the basic concepts. I don’t agree with everything (in particular I I would like to see the release burndown chart described), but you can only explain so much in under 10 minutes and every Scrum installation is different anyway. Have a look and enjoy!
  • Stax Networks Launches: Google App Engine For Java – Stax is built on top of Amazon EC2 and allows developers to create, text and deploy Java applications without having to build out their own physical infrastructure.
  • Database Normalisation :: BlackWasp Software Development – The sixteenth part of the SQL Server Programming Fundamentals tutorial discusses the concept of database normalisation. Normalisation is a database design technique that minimises duplication of information, reducing the risk of introducing data errors.
  • 10 Steps to Learn a New Coding Language Fast – NETTUTS – Learning a new language can seem like a daunting task. However, as it is with all types of learning, there are certain techniques and practices that will help you learn the language faster and more efficiently. Here are 10 of the best practices that aspiring programmers can use to quickly start programming in a new language
  • Kill Your Database – Rather, save your database with Terracotta. Relational database are valuable for many things, but serving as the cost-effective scalability backbone of high-load web applications isn't one of them. Is your database suffering under the weight of your application?
  • YouTube – Top Gear Tesla review – Top Gear reviews Tesla, smokes Lotus Elise

Daily del.icio.us for June 24th through June 27th

Daily del.icio.us for June 1st through June 4th

Daily del.icio.us for April 14th through April 16th

  • Searchable javadocs – Javadocs are good but not great as they miss a key feature of being able to do a full text search. Enter Documancer – It allows you to point to the index.html Javadoc file of a given library and one can then run full text searches through the Javadocs
  • DataCleaner – eobjects – DataCleaner is an open source project concerned with creating a data quality solutions for business and organizations wishing to measure and increase the quality of their data. DataCleaner includes functionality to profile and compare data, to validate da
  • IntelliJ IDEA Blog » Blog Archive » Announcing New Release of JetGroovy Plugin – We’re glad to announce the general availability of the new release of JetGroovy Plugin for IntelliJ IDEA. Version 1.5 brings yet more of IntelliJ IDEA´s smart, advanced features to Groovy and Grails developers
  • HtmlUnit 2.1 Released « A Public Scratchpad – The HtmlUnit team is pleased to announce a new release of HtmlUnit. This latest version includes a number of bug fixes and performance enhancements, and sports excellent support for GWT, jQuery and Sarissa, decent support for Prototype and Dojo, and basic
  • Enterprise 2.0: A Computer Security Nightmare? – Bits – Technology – New York Times Blog – One conclusion, the report notes, is that users are routinely, and fairly easily, circumventing corporate security controls. And that is because traditional firewall technology was not meant to grapple with the diversity of Internet applications of recent
  • Amazon’s cloud computing will surpass its retailing business | Between the Lines | ZDNet.com – Everyone else–Google and Microsoft–are working on their cloud computing services, but they are really in the first revision of their respective offerings. Amazon is ahead and tweaking
  • It’s Only Software » 5 Minute Guide to Spring and Simple[r!] JDBC – I recently worked on a personal project to learn how one can write dead-simple plain old JDBC applications using only Spring Framework 2.5 without an ORM layer. Spring 2.5 has many features that provide some of the convenience of ORM libraries
  • <a href="http:

Daily del.icio.us for Jan 17, 2007

Daily del.icio.us for Jun 23, 2006

WebLogic 9.0 – First look at the GA release

BEA released the latest version (v9.0) of their flagship application server, WebLogic in early August. I have been playing with the latest release of WLS to see what’s new, what’s cool and what are the features that will make me push to upgrade ASAP.

In addition to J2SE 1.5 or Java SE 5.0 support, WLS 9.0 is also fully compliant with the J2EE 1.4 Specification and is fully buzzword compliant. This release includes support for EJB 2.1, Web Services 1.1, JMS 1.1, JMX 1.2, JDBC 3.0, WS-Security, SAML 1.1, Profile 1.0, WS-Policy, WS-Reliable Messaging and WS-Addressing among others. The specification notably missing is EJB 3.0 – WLS 9.0 does not support EJB 3.0 and will support it as a service-pack, when EJB 3.0 JSR finally gets approved. This was kind of disappointing as WebLogic has always been on leading/bleeding edge in terms of specifications. I know I would have used the built-in support for the 3.0 spec, knowing full well that things may change and break with service-packs. The reality is that we won’t be pushing apps in production under 9.0 till SP1 is out and we’ve truly gone through and understood all the changes from 8.1 and their impact to our applications and processes. (More information of all the API alphabet soup is available here here).

One of the newest and biggest additions to WebLogic is the new functionality called ‘Production Deployment’ or ‘side-by-side deployment’. This new feature allows you to redeploy a new, updated version of a production application without affecting existing clients of the application that have valid sessions, and without interrupting the availability of the application to new client requests. So all the old users continue to use the old version of the application and any new users get directed to the new application. As old sessions timeout and/or users log out, the old application is retired. This also works in a clustered environment where you may have many WebLogic instances. The one thing I haven’t tested yet is whether in-memory (session) replication still works as before. The scenario I hope to test soon is where Server A and Server B participate in a cluster. User 1 comes in and logs into Server A – in-memory replication will replicate User 1’s session over to Server B. While User 1 is still active, I deploy a new version of the application to the cluster. Once the application is deployed, I kill Server A and then have User 1 attempt to use the application. Will the old version of the application still be there on Server B even though it didn’t have any users using it?

WLS 9.0 also includes a completely new administration console built on top of the WebLogic Portal framework as a set of JSP’s with Struts and Beehive. This allows you to extend the console and add your own custom admin screens. I think this is a pretty useful concept as developers can add custom JMX hooks in their applications and then surface that data via the custom admin console interface. I’ve always built custom admin-consoles for applications to turn on/off things, resources inside the applications or failover, etc. Being able to add that functionality inside the console gives you the additional authentication and authorization capabilities to your custom admin screen. WLS supports JMX 1.2 and JMX Remote API 1.0 (JSR-160) in this release, which deprecates BEA’s proprietary API for remote JMX access, MbeanHome.

One of the nicest new features is the ability to create 1 log file for 1 day. This was always a missing feature that annoyed me to no end as you could rotate logs based by time but it was always elapsed time and so you couldn’t create 1 log file for 1 day that automatically rotates to a new log file at midnight. That is now enabled and all I can say is that it’s about time.

Another great enhancement is the use of DataSources instead of connection pools by default. Instead of configuring a JDBC connection pool and then configuring a data source to point to the connection pool and binding to the JNDI tree, you configure a data source that encompasses a connection pool. Before JDBC 2.0 and the concept of DataSource, people created a connection-pool and then used the pool driver (JDBC) to get a connection. But now everything is in the context of a DataSource and so you have to create a DataSource to create the underlying connection pool and that will force people to rewrite their legacy code that gets a connection from the pool directly. It’s a good thing, as it will make their code more portable.

There are quite a lot of simple enhancements that I find useful. For example, hitting CTRL-C to interrupt a running server that you were running inside a DOS window or UNIX shell used to just kill the server. Now the start script catches the interrupt and calls the WLS shutdown hook. Another minor but useful thing is that the auto-generated start scripts have support for JPDA (Java Platform Debugger Architecture). The command line includes all the parameters needed to fire up the debug listener on port 8453 but it’s configurable at each startup script level.

I know I’ve only scratched the surface with WebLogic 9.0 in the weeks of playing. I’ll continue to blog about anything that’s interesting or cool or broken.

Links of Interest:

WebLogic, WLS, WebLogic 9, WLS 9.0, BEA, J2EE

iBATIS – Where have you been all my life!

iBATIS SQL Maps is an open-source JDBC framework that provides a very simple and flexible means of moving data between your Java objects and a relational database. The SQL Maps framework helps reduce the amount of Java/JDBC code that is needed to access a relational database. The framework allows you to map JavaBeans to SQL statements using a very simple XML descriptor that allows you to create complex queries, and inner/outer joins. The beauty of it all is that this is achieved without any special database tables, bytecode manipulation, or code generation.

iBATIS is not meant to replace Object-Relational Mapping (ORM) tools such as Hibernate, OJB, Entity beans or TopLink to name a few. Rather it is a low-level framework that allows you to directly hand-code your SQL statements and map them to Java object. Once you map your persistence layer to your object model, you are all set. You don’t need to lookup DataSource, get connections, create prepared statements, parse ResultSet or even cache the results – iBATIS does it all for you. Under the covers, iBATIS creates a PreparedStatement, sets the parameters (if any), executes the statements and builds a Map or JavaBean object from the ResultSet. If the SQL statement was an insert or an update, the numbers of rows affected by the SQL are returned. Here’s a little sample to illustrate the features of iBATIS: We’ll start with a simple database that ships with the JpetStore application from iBATIS.

First you configure SQL Maps by creating a XML configuration file, which provides configuration details for DataSources, SQL Maps and other options like thread management. Here is a simple example of the SQL Map configuration file:

https://gist.github.com/310697.js

In my case, I am deploying this code in WebLogic and I have already created a connection pool and a datasource on the WebLogic side. I am just referring to the name of the datasource by using jdbc/jpetstoreDS. You can also create your own datasource via. the SQL Map configuration file:

https://gist.github.com/310698.js

The SQL Map configuration file includes a reference to another SQL Map file that contains your SQL statements for insert, update, delete as well as results and parameter mapping. Here is a simple example of the file Account.xml:

https://gist.github.com/310699.js

The Account.xml SQL Map file is pretty self-explanatory — In the file, we are describing a select statement that takes an Integer as it’s argument and returns an instance of com.j2eegeek.ibatis.domain.Account. Insert, updates, deletes work the same way along with stored procedures and dynamic queries. The programming API for SQL Maps is really straightforward and provides the developer with the ability to: configure an SQL Map, execute an SQL update (including insert and delete), execute a query for a single object, and execute a query for a list of objects.

https://gist.github.com/310700.js

A pretty simple example but it should illustrate the simplicity of iBATIS SQL Maps and show you the potential of this framework. SQL Maps takes away all of the work required to create Statements, validate and parse inputs, create and parse ResultSets and all of the nitty-gritty details of working with SQL by hand. Instead, you are working at the object level and not really worrying about how your data is stored or retrieved. I’ve found that this also enables a good separation of work where your ‘data-guy’ can create up the appropriate SQL statements for you and you just plug them in, assuming you have a ‘data-guy’. I’ve found that SQL Maps really helps me in my development process (In most cases, I am working with existing databases) as I spend time looking at the data-model as part of my overall design process and will typically mock-up the SQL statements I am going to use to manipulate the data at hand. Now I can just take my SQL statements and plug them into the SQL Map XML files and half my app is already built.

iBATIS SQL Maps is really powerful and you can take this one step further by using Spring’s DAO framework in conjunction with iBATIS. Using Spring’s DAO framework and the iBATIS template classes provided by Spring, you will write even less code that you would have normally written using iBATIS by itself.