Daily del.icio.us for September 17th through September 23rd

  • JIRA 4 RC1 – Beta no more – JIRA Product Blog – The JIRA 4 Beta program is now complete. This week we released JIRA 4 Release Candidate 1 which means we're closer than ever to the finish line.
  • jrecordbind: JRecordBind – Home – JRecordBind is (AFAIK) the only tool aimed at fixed-length files that's able to marshall and unmarshall. By the way you may be a producer of fixed length files, not just a consumer.

    JRecordBind supports hierarchical fixed length files: records of some type that are "sons" of other record types.

    JRecordBind uses XML Schema for the definition file: that could make your learning curve steeper.

  • SOA patterns – Reservations | SOA Zone – Reservations is a protocol level pattern which that involves Reservation involves exchange of messages between service consumers and services. The next pattern is one of the enablers of such message exchange , it is also a one of the confusing pattern since a lot of commercial offerings which include it include gazillion other capabilities – yes I am talking about the ServiceBus
  • Agile Architecture, Lean Principles | Javalobby – If we are able to take a seemingly architecturally significant challenge and make it reversible, then we have effectively minimized the impact and cost of change to a point where change is no longer architecturally significant.
  • Java Web services: JAXB and JAX-WS in Axis2 – Apache Axis2 supports a range of data-binding technologies, including the official Java™ standard, JAXB 2.x. Axis2 also supports the Java standard for Web service configuration, JAX-WS 2.x, as an alternative to its own custom configuration technique
  • JPA Implementation Patterns: Testing | Javalobby – This week I will discuss various approaches to testing JPA code.The first question to ask is: what code do we want to test? Two kinds of objects are involved when we talk about JPA: domain objects and data access objects (DAO's)
  • InfoQ: RESTful Approaches To Financial Systems Integration – RESTful architectures are the subject of this presentation, specifically the way they are particularly attractive in solving many financial services integration problem
  • AT&T’s Femtocell Coming Soon – Yahoo! Finance – AT&T’s 3G Microcell is designed to improve wireless signal for both voice calls and data applications in home and small business settings and supports up to 10 3G capable cellular handsets
  • iPhone Cycling Applications « – Phone, music, email, cycling computer and GPS tracking all in one device. Pretty slick. However before you trash your pricey cycling computer be aware the iPhone has an Achilles heel as a cycling computer.
  • Dive Into Python 3 – Dive Into Python 3 covers Python 3 and its differences from Python 2. Compared to Dive Into Python, it’s about 20% revised and 80% new material. The book is now complete, but feedback is always welcome.
  • memcached and Grails, Part 1: Installing and using memcached – Caching is an essential part of any high-volume Web application and memcached is a great caching option. I have personally had a ton of success using it. If you choose to leverage memcached as your caching solution, I am sure you will see just how effective it is.

Daily del.icio.us for December 27th through December 30th

  • La terraza de Aravaca: Lessons learned using GWT, Axis and JPA simultaneously – Here you have some lessons learned that should be taken into account when working with the Google Web Toolkit, Axis and any of the JPA implementations out there
  • PDF embed code generator – This code generator can generate two kinds of PDF embedding code: pure standards-compliant HTML markup, or JavaScript-based PDFObject code. The generator also makes it easy to customize your embed code using Adobe's optional PDF Open parameters.
  • JSP – Create Custom Tags for Beginners | Techie Zone – JSP Tags acts as a plugin to your JSP pages. These are basically Java Classes that get executed when jsp page get rendered by server and browser. JSP comes with in build Tags like jsp:include, jsp:forward, but they are not sufficient to cater to the Web World. To overcome this problem you can design tags based on your business requirement. This article will guide you how we can create an custom tags for JSP.
  • Design Pattern Interview Questions Part (3) – C#, ASP.Net, VB.Net – To give you a practical understanding i have put all these design patterns in a video format and uploaded on http://www.questpond.com/FreeDesign1.htm . You can visit http://www.questpond.com/ and download the complete architecture interview questions PDF which covers SOA , UML , Design patterns , Togaf , OOPs etc.
  • Memoization in Java Using Dynamic Proxy Classes | O’Reilly Media – Memoizing a function adds a transparent caching wrapper to the function, so that function values that have already been calculated are returned from a cache rather than being recomputed each time. Memoization can provide significant performance gains for computing-intensive calls. It is also a reusable solution to adding caching to arbitrary routines.
  • YUI Theater — Douglas Crockford: "Ajax Performance" » Yahoo! User Interface Blog – Douglas Crockford returns to YUI Theater with another chapter in his evolving lecture series. This session, “Ajax Performance,” debunks common misconceptions about the relationship between JavaScript and performance and gives engineers a core focus for improving the performance of web apps
  • giver – Google Code – Giver is a simple file sharing desktop application. Other people running Giver on your network are automatically discovered and you can send files to them by simply dragging the files to their photo or icon shown in Giver. There is no knowledge or set up needed beyond what the person looks like or their name to use Giver.
  • Google, WalMart, and MyBarackObama.com: The Power of the Real Time Enterprise – O’Reilly Radar – What do Google, WalMart, and MyBarackObama.com have in common, besides their extraordinary success? They are organizations that are infused with IT in such a way that it leads to a qualitative change in their entire business
  • Fast and ‘free’ beats steady and paid on MySQL • The Register – It appears that since being acquired by Sun Microsystems, MySQL's process has been slowed by a 30,000-person bureaucracy, and the open source community has the patience of a six year old.
  • InfoQ: Architecting for Green Computing – In an article entitled “Green Maturity Model for Virtualization”, Kevin Francis and Peter Richardson explain how to use virtualization to reduce energy consumption. They see 4 types of computing: Local, Logical, Data Center and Cloud Computing, the last offering the most advanced form of virtualization and therefore representing the greenest computing

Daily del.icio.us for Feb 25, 2007 through Feb 26, 2007

Daily Del.icio.us for Feb 21, 2006

BEAWorld 2005 SOA Keynote Panel Discussion

I had the pleasure to participate in Keynote SOA panel discussion at BEAWorld 2005 in Santa Clara. If you’re interested in watching the entire keynote, it’s available online here. To get to the good part, skip ahead to around 2:38:00. :) We had a general idea on the topic we were going to discuss and so I have put down some thoughts about the questions and topics in general. Given that we didn’t have a lot of time during the keynote, I didn’t get an opportunity to make all my points. And so here are the additional thoughts I probably would have convened, had we had more time.

1.What are some of the challenges that developers face in implementing Service-Oriented Architecture?

There are a lot of challenges facing developers and organizations that are in the process of implementing Service-Oriented Architecture. Being a technical person, the technology part is easy and most developers and architects in the audience would agree. One of the biggest challenges a lot of SOA efforts run into is the lack of business alignment. If your business partners are not involved and you treat this as just an IT project, your chances of success are fairly limited. The biggest benefit of an SOA is that it allows a business to be agile and nimble and respond quickly to changes in market condition, mergers and acquisitions, competitive landscape and regulatory or compliance changes. So SOA’s should be seen as business drivers and not just a technology project. Another big challenge a lot of IT organizations face is that they need to shift from creating implementation-specific functionality or silos and move to creating standards-based services.

Another challenge is the upfront costs – Organizations will have to invest in tools training, process and organization changes. Part of the organizational change is the whole governance effort. If your organization has dedicated line-of-business development teams, you will need some new organizations structure to provide technical leadership to bring these teams together and focus on the global business issues. Governance is usually the part that makes or breaks a SOA effort. Different development teams aligned with their individual lines of business have their own set of priorities and deadlines. They usually need to be convinced that the bigger picture view of the Enterprise is just as important as building or leveraging services is in the overall interest of the business. There isn’t a tried and true approach to getting SOA in your organization. In my case, I went to my CIO and his management team about 3.5 years ago and they gave me their blessing to move forward. But working for a Financial Services company also meant that IT-spend was really tight due to the horrible market conditions. So I took the approach of starting small and creating 1 simple service that became our killer-app. I implemented something we internally call the ‘Security Framework’ – The Security Framework was written in Java with an stateless EJB as a façade and you can could call the EJB directly or call the Web Service or use the Axis and WebLogic client I had created. The Security Framework taped into most of the authentication stores inside our network and so applications that were using the service could switch their authentication from a database model to Active Directory without any coding changes. If we implemented another authentication mechanism, the service would code that and not require all the clients to do anything. The service also offered roles or authorization and auditing functionality and so the developers were compliant with our internal authentication, authorization and auditing standards as they use this centralized service. Since then, our SOA effort has blossomed and we have a lot more services but we are not at a place where we need an ESB – We are in the early exploratory phase of the ESB to see if we need any of the services provided by a service bus.

Another big challenge is that there are very few mature SOA methodologies available today and so organizations will end up spending time developing their own methodology.

The operational aspect of software deployment also ends up becoming a challenge for a lot of organizations. With services acting as ‘black-boxes’ with many consumers, upgrades, back fixes, new features, versionining etc become big issue and best-practices haven’t emerged yet. For example, we virtualize our servers and individual WebLogic instances with a service-name that points to a hardware load balancer (F5 Networks BIG-IP). So a WebLogic instance running on Server A (or a cluster) listening on port 8000 could have a name like p-securityapp-v2 and another WebLogic instance running on the same server listening on port 8001 could have a name p-securityapp-v3. As long as client(s) externalize the URI of the service in a property file or some other store/resource, they can upgrade to v3 of the service by just changing the property file (and testing). So we can move our services from server A to server B and all we have to do is change the load-balancers’ configuration and everyone is automatically using the new instance. In our organization, we encourage people to upgrade and use the latest version of the service but the old service never goes away. Not the best solution but it’s easy to convince people to use something if they know that they will not be forced to change something in the middle of a development cycle for another effort.

The second part of the operational aspect is monitoring – There are very few tools on the market today that will allow you to monitor your services and surface the information to a business dashboard or console. I am looking forward to checking out the pavilion to see what people have been working on and how they can help Enterprises better monitor and track issues.

2.What are the advantages for developers in implementing SOA?

There are several advantages for developers in implementing SOA and one of the biggest one is that SOA allows the developer to focus on the business logic and implement functionality without having to worry about the other details they typically focus on. As services have a well-defined interface that is independent of the implementation, developers are free to implement their code in any programming language and so people that feel comfortable with Java can stick to Java and people that feel comfortable with .NET can stick with .NET. Vendors may not like the idea of mixed or heterogeneous environments, but they are a reality for most of the organizations and having a Java-only or a .NET only solutions or standard doesn’t make sense. Besides, it’s ludicrous to think that one vendor’s stack will solve all your problems. Having multiple vendor stacks keeps them honest and gives you options.

Another great benefit is almost a side effect but having a well-defined contract enforces good design practices.

Developers can decrease development times by using pre-built, reusable services as building blocks and create loosely coupled systems that are flexible and can adapt to changing business conditions. It’s great to be able to leverage components that are deployed, documented, tested and certified internally as you don’t have to reinvent the wheel. Instead, you can spend the time saved on other efforts for the business.

As an aside, there is also an industry effort called SOA Blueprints that is designed to help organizations build applications using service-oriented architecture (SOA). SOA Blueprints creates a common vocabulary to discuss SOA in an architecturally neutral way allowing comparable implementations to be crafted using different technology sets including J2EE, .NET and Web Services.

3.BEA sees great synergy in blending open source solutions with commercial technologies. Can you explain situations where you may have successfully used an open source framework in combination with WebLogic Server?

I see great value in blending of open-source and commercial solutions as a lot of great innovation is coming out of the open-source community and the ability to pick the best-of-breed components and deploying them inside WebLogic is very powerful. We’ve had great success in blending WebLogic and JRockit with open-source solutions like Struts, Spring, iBATIS, AXIS, log4J and many other great tools. Let’s take the example of Spring, which is a very popular Java/J2EE application framework built on the idea of Inversion-of-Control. Spring offers great data access and transaction management capabilities that allow you to implement your data-access layer using JDBC, iBATIS, Hibernate or JDO in a standardized way. All of our data-access components use Spring’s DAO framework with iBATIS under the covers. In this scenario, we are using the robust connection pooling and transactional capabilities of WebLogic while using that simplified POJO based programming model of Spring that eliminates unnecessary complexity often associated with J2EE.

Struts is also a great example of how we leverage this MVC-framework on top of WebLogic. Our web applications are built using Struts, which has become the de facto standard for UI development. All of our Struts application are deployed inside WebLogic and leverage our services-tier that’s based on EJB’s and Web Services. Another framework we’ve had great success with for external integration is the Apache Axis product that is an implementation of SOAP. Using Apache Axis, we’ve been able to leverage Web Services deployed inside WebLogic from Tomcat, JBoss and command-line or batch applications.

BEAWorld, SOA, AquaLogic, Spring, Struts, AXIS, WebLogic