For years, the Java zone has brought you top-quality technical content by some of the best minds in the industry. But taking the time to read an in-depth, code-heavy article can be difficult, even if it's about a topic that's critical to your day job. This podcast series, led by the engaging and technically curious Andrew Glover, provides a new way to get information from the sources you trust most. Every few weeks, we'll publish a new discussion with an expert on the topics that are important to your job.
View entire articleThe Gang of Four's Interpreter design pattern encourages extending a language by building a new language from it. Most functional languages let you extend the language in a variety of ways, such as operator overloading and pattern matching. Although Java doesn't permit any of these techniques, next-generation JVM languages do, with varying implementation details. In this article, Neal Ford investigates how Groovy, Scala, and Clojure realize the intent of the Interpreter design pattern by allowing functional extensions in ways that Java does not.
View entire articleTraditionally, Traditionally, IBM DB2® for i catalog views have only provided metadata about existing database objects. A new set of catalog views also provide information about your IBM i system environment. Specifically, these view make it easy to access information about the Group PTFs and TCP/IP network connections related to your DB2 for i database.
View entire articleThe JVM's ability to execute machine- and language-independent bytecode opens a world of problem-solving possibilities to polyglot programmers. Languages for the Java platform are proliferating rapidly (with more than 200 now available), and several have captured significant developer mindshare. This knowledge path is an overview of some of the robust languages that can complement your Java programming skills by taking full advantage of the Java platform.
View entire articleProtect your business data on AIX systems using immutability and appendOnly features supported by IBM General Parallel File System V3.4 ensuring compliance to various government regulations. Having rich set of command line interfaces, GPFS allows you to set appropriate restrictions to your business audit files, health center records and log files in order to effectively secure them from being tampered or accidentally deleted. This article illustrates how to make use of immutability and appendOnly restrictions offered by IBM GPFS V3.4 to protect your AIX data.
View entire articleSelect the most suitable MapReduce implementation for large scale data analysis jobs based on your skills, preferences, and requirements. MapReduce is a simple and powerful programming model that enables the easy development of scalable parallel applications to process vast amounts of data on large clusters of commodity machines. It isolates the application from the details of running a distributed program. But many programmers are unfamiliar with the MapReduce programming style and prefer to use a SQL-like language to perform their tasks. In this article, read an overview of high-level languages and systems designed to tackle these problems and add declarative interfaces on top of the MapReduce framework.
View entire articleIn the IBM PureApplication System environment, a virtual application pattern is the critical element that allows a user to rapidly set up and manage cloud application infrastructure; a virtual application pattern describes an application, and employs the tools to build the appropriate infrastructure for the application and then deploys the application to that infrastructure. IBM PureApplication System virtual application patterns are the captured essence of years of application-infrastructure-deployment experience and best practices. Virtual application patterns encapsulate optimized solutions of multiple middleware elements to host specific types of application workloads. In this article, the authors introduce you to virtual application patterns and their place in the ecosystem, describe their components and functions, and provide a basic look at how to create and use a virtual application pattern.
View entire articleIn the IBM PureApplication System environment, a virtual system pattern is the critical element that allows a user to rapidly set up and manage the cloud middleware topology; a virtual system pattern describes a middleware topology and employs the tools to automatically build that topology in the cloud. IBM PureApplication System virtual system patterns are the captured essence of years of infrastructure-management experience and best practices. Virtual system patterns encapsulate repeatable topology definitions based on various middleware images and runtime configurations; they give you control over the middleware landscape being deployed. In this article, the authors introduce you to virtual system patterns and their place in the ecosystem, describe their components and functions, and provide a basic look at how to create and use a virtual system pattern.
View entire articleSpring Roo Advanced add-ons provide the mechanisms to add Java code in applications (for example, building an add-on that can write equals and hashcode methods for your domain object). With the addon create command, you can create a template of an advanced add-on. You then can extend the template to meet developer requirements. This article walks through the steps to create an advanced add-on.
View entire articleIn Part 1 of this series, we looked at building a CRUD-based application in minutes with Roo. Here in Part 2, we will extend that application to a full-fledged enterprise application by adding features such as Spring security, email support, and many others.
View entire articleSpring Roo is a lightweight productivity tool for Java technology that makes it fast and easy to develop Spring-based applications. Applications created using Spring Roo follow Spring best practices and are based on standards such as JPA, Bean Validation (JSR-303), and Dependency Injection (JSR-330). Roo offers a usable, context-aware, tab completing shell for building applications. Spring Roo is extensible and allows add-ons, enhancing its capability. This article introduces Spring Roo and provides step-by-step instructions on building Spring Roo source on Windows and *nix systems.
View entire articleTake the rapid development of Roo a step further by creating applications to work in the cloud with Cloud Foundry, the first open platform as a service project created by VMWare. Learn more about the environment and then deploy an application into Cloud Foundry using the Roo shell.
View entire articleDesign patterns represent just one way to solve problems, but if you primarily use object-oriented languages, you may come to think in design patterns. In this installment of Functional thinking, Neal Ford illustrates solutions to a common problem -- incompatible interfaces -- using traditional design patterns, metaprogramming, and functional composition. Each approach has pros and cons, but thinking about the design of the solutions helps you see problems in new ways.
View entire articleTraditional MVS datasets are not directly accessible from WebSphere Message Broker. This article shows you how to read them using Java for z/OS (JZOS) libraries with WebSphere Message Broker. Using a Java class to read records from a dataset provides much more flexibility in post-processing, enabling you to modify the records in many different ways.
View entire articleThe Java Native Interface (JNI) is a programming framework that enables Java code running in a Java Virtual Machine (JVM) to call and to be called by native applications and libraries written in other languages such as C, C++ and assembly. This article describes how developers can leverage this framework to integrate their J2EE applications deployed on IBM WebSphere Application Server with these C libraries.
View entire articleContrary to popular belief, design patterns exist in functional programming -- but they sometimes differ from their object-oriented counterparts in appearance and behavior. In this installment of Functional thinking, Neal Ford looks at ways in which patterns manifest in the functional paradigm, illustrating how the solutions differ.
View entire articleIBM Tivoli Service Automation Manager (TSAM) V7.2.2 introduces the extension: A set of TSAM software components that can implement a new IT service automation solution (known as a service definition) or add capabilities to existing service definitions. In this article, the authors explain how to tune the load balancer policy to your system's needs; how to add and remove application servers as the workload of the business application changes; and how to modify the firewall rules and why you might need to do that.
View entire articleThis article gives you insight into the memory usage of Java code, covering the memory overhead of putting an int value into an Integer object, the cost of object delegation, and the memory efficiency of the different collection types. You'll learn how to determine where inefficiencies occur in your application and how to choose the right collections to improve your code.
View entire articleMaster web application complexity with the functional scripting superstack of CoffeeScript, Node, and Underscore.js.
View entire articleLearn about COBOL, Java (WAR), and related DB2 assets, including embedded SQL, by exploring the features of the Rational Asset Analyzer browser user interface.
View entire articleUsing push notification technology, server applications can send rich content to apps installed on iOS or Android devices, <!--bypassing the difficulty--> saving you the trouble and expense of implementing Short Message Service (SMS) or Multimedia Messaging Service (MMS) in your mobile-messaging apps. Michael Yuan shows how to support this key feature in your iOS applications. You'll also see how to use an open source Java library that simplifies the notification process.
View entire articleLearn how to use the IBM Rational Asset Analyzer inventory wizard to analyze COBOL and Java (WAR) files, including embedded SQL, by scanning the related files from a Windows directory structure.
View entire articleJava is becoming a popular programming language for CICS applications. CICS provides multiple Java environments, each with its own strengths, so passing data objects between the different CICS Java environments is an important topic. This three-part article series gives you the details. Part 3 describes the API that enables CICS TG Java client programs to interact with a CICS TS program. It also provides an object transporter that you can use in a CICS TG Java client along with the wizards in Rational Application Developer to generate code to communicate from a CICS TG Java client to a CICS TS program.
View entire articleModern dynamic languages have incorporated many functional features to take mundane tasks off developers' hands. This article explores the benefits of caching at the function level with Groovy, contrasting it with an imperative approach. It illustrates two types of caching -- intramethod and external -- and discusses the advantages and disadvantages of the imperative and functional versions.
View entire articleIBM Tivoli Service Automation Manager (TSAM) 7.2.2 introduces the extension, a set of TSAM software components that can implement a new IT service automation solution (known as a service definition) or add capabilities to existing service definitions. In this article, the authors define a scenario in which the desired result is to securely deploy a three-tiered enterprise application (in this case J2EE) to the cloud. They demonstrate how to set up and provision extensions in TSAM as the first step to accomplishing this task.
View entire articleData security is a serious concern for organizations considering cloud adoption, but in many cases it needn't be. In this installment of Java development 2.0, learn how to use private-key encryption and the Advanced Encryption Standard to secure sensitive application data for the cloud. You'll also get a quick tutorial on encryption strategy, which is important for maximizing the efficiency of conditional searches on distributed cloud datastores.
View entire articleAuthenticRoast is an open source project that works with the Java Authentication Service Provider Interface for Containers (JSR 196) to let you develop custom authentication modules for use with container-managed, declarative security. Joe Sam Shirah shows how AuthenticRoast can minimize configuration impact on Java Enterprise Edition (JEE) containers and greatly reduce coding effort for custom security requirements. A downloadable WAR with demonstration code is provided.
View entire articleJava is becoming a popular programming language for CICS applications. CICS provides multiple Java environments, each with its own strengths, so passing data objects between the different CICS Java environments is an important topic. This three-part article series gives you the details. Part 2 uses an example Java class to show you how to pass Java data objects between applications running in a CICS-pooled JVM, an Axis2-based JVM, a CICS Dynamic Scripting environment, and a CICS OSGi-based JVM.
View entire articleRichFaces, like most other rich/Ajax component frameworks designed for use with JavaServer Faces (JSF), was extensively revamped for compatibility with the significant changes in JSF 2. Joe Sam Shirah examines changed and new RichFaces 4.1 components that provide the same functionality he demonstrated in "An introduction to RichFaces" with version 3.1. He also updates the setup requirements for using RichFaces with JSF.
View entire articleJava is becoming a popular programming language for CICS applications. CICS provides multiple Java environments, each with its own strengths, so passing data objects between the different CICS Java environments is an important topic. This article series gives you the details. Part 1 describes the CICS Java environments, the advantages of each one, and the different ways to pass data between them. Part 2 uses an example Java class to show you how to pass Java data objects between applications running in a CICS-pooled JVM, an Axis2-based JVM, a CICS Dynamic Scripting environment, and a CICS OSGi-based JVM. Part 3 shows you how to pass Java data objects from a CICS Transaction Gateway Java client program to a CICS-pooled JVM or CICS OSGi-based JVM.
View entire articleThis knowledge path introduces Java development concepts and skills to programmers who are new to the language and platform. Experienced Java developers guide you from basic Java syntax to more-advanced abstractions and constructs, sharing best practices and useful resources along the way. You'll also get acquainted with the Eclipse IDE and use it for hands-on learning.
View entire articleWith Groovy, metaprogramming and functional programming form a potent combination. See how metaprogramming enables you to add methods to the Integer data type that take advantage of Groovy's built-in functional capabilities. And learn how to use metaprogramming to incorporate the Functional Java framework's rich set of functional features seamlessly into Groovy.
View entire articleFor years, the Java zone has brought you top-quality technical content by some of the best minds in the industry. But taking the time to read an in-depth, code-heavy article can be difficult, even if it's about a topic that's critical to your day job. This new podcast series, led by the engaging and technically curious Andrew Glover, provides a new way to get information from the sources you trust most. Every few weeks, we'll publish a new discussion with an expert on the topics that are important to your job.
View entire articleJava applications, which store their data in files, can benefit in many ways by accessing file-systems using transactions. Learn how to work with open source XADisk for transactional file access.
View entire articleRedis has a lot in common with memcached but it boasts a richer set of features. In this month's Java development 2.0, Andrew experiments with adding Redis (by way of Java-based variant Jedis) to his location-based mobile application. Learn how Redis works as a simple data store, then try repurposing it for ultra-fast, lightweight caching.
View entire articleNode.js presents an exciting alternative to traditional Java concurrency, and all you need to get started is an open mind and a little bit of JavaScript.
View entire articleOver time, languages and runtimes have handled more and more mundane details for us. Functional languages exemplify this trend, but modern dynamic languages have also incorporated many functional features to make developers' lives easier. This installment investigates some of the functional features already lurking in Groovy, showing how recursion hides state and how to build lazy lists.
View entire articleThe Java language's main benefit is the portability of Java applications across hardware platforms and operating systems. But some applications can't be written entirely in Java: The standard Java class libraries might not support a required platform-specific feature or library; you might prefer to implement time-critical code in a lower-level, faster language, or you might want to leverage legacy code assets. The Java Native Interface (JNI) within the Java platform enables Java and "native" (non-Java) code to interoperate. Using JNI entails certain trade-offs, beyond loss of application portability. This knowledge path is designed to help all Java developers use JNI safely and efficiently.
View entire articleTracking the source of Java application bottlenecks is critical to the application-development cycle. With the introduction of better profiling tools and a host of diagnostic tooling from the IBM Java team and others, the task of monitoring and diagnosing Java applications has become considerably less difficult than in the past. In this knowledge path, you'll learn more about the tools you can use to assess and improve the health of your applications effectively.
View entire articleMeet Heroku, a Ruby-based PaaS that brings a winning combination of configurability and ease-of-use to Java application development and deployment in the cloud.
View entire articleLearn what Node.js is and how to get started using it in this brief introduction.
View entire articleApache Mahout committer Grant Ingersoll brings you up to speed on the current version of the Mahout machine-learning library and walks through an example of how to deploy and scale some of Mahout's more popular algorithms.
View entire articleLearn how to expose existing business functionality embedded in legacy applications as JAX-RS 1.1 RESTful services using WebSphere Application Server V8.0 and Rational Software Architect.
View entire articleGet an overview of the foundational constructs of the JavaScript language. This demo briefly describes the basic constructs and provides examples that illustrate how they can be used.
View entire articleSee the different methods used to create objects using JavaScript. This demo uses each object-creation method to create a functional photo slideshow.
View entire articleA recent trend has been to build a strong connection between cloud application and service development and operations; in particular, this trend is leading to a tighter, more efficient integration of application life cycle management (ALM) tools with cloud computing. In this article, the authors will show you how to use the open source Apache Maven build management tool to automate build and deployment projects on IBM SmartCloud Enterprise. They will also demonstrate how to integrate the management of virtual machines on the cloud into the build and deployment life cycle by developing an Apache Maven plug-in that looks up and creates virtual machines that run a J2EE application server on the cloud. You'll also discover best practices for development and deployment on the cloud and how to use IBM Cloud API's and Maven to implement these practices.
View entire articleWhen a significant new feature is added to a language, it is quite common that the new feature necessitates, or at least encourages, the addition of other new features as well -- for better or worse. In this installment of Language designer's notebook, Brian Goetz discusses how language features invite their friends with them.
View entire articleWhen extended with the downloadable IBM Integration Module, the IBM Optim pureQuery Runtime simplifies the process of generating DB2 static SQL for Hibernate and iBATIS applications. It does this without requiring changes to your application code or gathering SQL from production workloads. The Optim pureQuery Runtime also enables Hibernate and iBATIS applications that access DB2 or Informix to benefit from the heterogeneous batching feature in pureQuery. This article is part one of a four-part series about using the IBM Integration Module with Hibernate applications. This article includes a downloadable sample application that illustrates how you can easily enable static SQL and heterogeneous batch functions with Hibernate applications. The article also provides informal elapsed time performance measurements. Part 2 focuses on iBATIS applications.
View entire articleDevelopment teams that build applications using Hibernate as the Object Relational Mapper (ORM) or persistence mechanism spend significant time tuning the amount of data that Hibernate fetches from the database, and the number of SQL queries that Hibernate uses in each business use-case of the application. In this article, learn how the IBM InfoSphere Optim pureQuery auto-tuning feature for Hibernate automates the process of determining these problems and automatically fixing them without intervention. Both the application development team and DBAs benefit from the solution.
View entire articleVirtually all Java developers need to work with XML, the de facto standard format for data interchange. This knowledge path is for those who want to explore tools and techniques that make querying XML data from Java code -- whether the data is inside or outside a database -- as straightforward and effective as querying relational (SQL) data.
View entire articleIn concurrent applications, several computations execute simultaneously -- potentially interacting with one another -- on multiple cores in the same chip, on preemptively time-shared threads on the same processor, or on physically separate processors. Java's built-in support for threading facilitates the building of multithreaded applications but also requires developers to be vigilant about concurrency issues. This knowledge path is for Java developers who want to master multithreaded programming in the Java language -- and learn about alternative approaches for the Java platform that are designed to exploit modern multicore processor hardware.
View entire articleRepresentational state transfer (REST) is a high-level architectural style for designing loosely coupled networked applications and services that rely on named resources rather than messages. Java developers who want to implement RESTful web services are the target audience for this knowledge path.
View entire articleThe distributed, stateless nature of web services makes securing them a key concern. This knowledge path is intended for Java developers who need to implement message-level security in their XML-based web services applications,. It introduces the reader to OASIS Web Services Security (WS-Security) standard and shows how to use it to secure Java web services applications, using both the open source Apache Axis web services framework and IBM products. The material is especially suited (but not limited) to those who wish to deploy secure web services on IBM WebSphere Application Server, including the free Community Edition, using tooling available from IBM.
View entire articleNearly all products in the Java portal-server space have implemented the Java Portlet Specification. The specification enables interoperability among portlets and portals by defining APIs for portlets and by standardizing rules for preferences, user data, portlet requests and responses, deployment, packaging, and security. This knowledge path helps you build, test, and deploy standards-compliant portlets for open source containers and for IBM WebSphere Portal. It can also help you prepare for IBM Certified Solution Developer - WebSphere Portlet Factory 7.0 certification.
View entire articleReal-time applications -- applications that must respond in a highly predictable time frame -- are essential in financial services, telecommunications, manufacturing, defense, and other industries. This knowledge path is designed for experienced developers who need to build Java solutions that meet real-time requirements. Learn about the real-time Java extensions to the Java platform and how to exploit them via IBM WebSphere Real Time, a standards-compliant Java runtime and SDK.
View entire articleThe RDBMS model is a rock-solid foundation for storing data in traditional client-server architectures, but it doesn't scale to multiple nodes easily or cheaply. In the era of highly scalable web applications like Facebook and Twitter, schemaless datastores -- NoSQL -- provide a solution. This knowledge path introduces Java developers to NoSQL technology and the role of Apache Hadoop MapReduce in big data analysis.
View entire articleGet started implementing web services using the Java API for XML-Based Web Services (JAX-WS) ? the current Java standard for configuring web services. Learn JAX-WS concepts and then get hands-on practice creating and deploying JAX-WS web services and clients. This knowledge path is especially suited (but not limited) to Java developers who want to deploy web services on IBM WebSphere Application Server, including the free Community Edition. It's also a good starting point for preparing for IBM Certified Solution Developer - Web Services Development for WebSphere Application Server (V6.1 or V7.0) certification.
View entire articleLearn how to configure IBM Rational Application Developer and WebSphere Application Server to profile your remote WebSphere application. This article provides steps for setting up either Java profiling or the J2EE Request Profiler.
View entire articleProgrammers accustomed to using the building blocks of object orientation (inheritance, polymorphism, and so on) can become blind both to its shortcomings and to alternatives. Functional programming uses different building blocks to achieve reuse, based on more general-purpose concepts like list transformations and portable code. This installment of Functional thinking compares coupling via inheritance with composition as reuse mechanisms, and pinpoints one of the key differences between imperative and functional programming.
View entire articleUsers don't want to see something on your application that says, "Optimized for XYZ browser." They just want it to work. Learn how efficient unit testing of your JavaScript can make it easier for you to support more browsers.
View entire articleThe Visitor pattern is commonly used to traverse and manipulate tree data in Java and other object-oriented programs. Now let's see what happens when Alex Miller rewrites the pattern using Clojure's functional zippers.
View entire articleAmazon EC2 offers bare-bones computing power for pennies. In this demo, Andrew Glover introduces EC2's generic infrastructure service and demonstrates how to get started.
View entire articleLearn how to use Ruboto, a framework that leverages the power of JRuby, to quickly build and deploy Android applications.
View entire articleWorking every day in a particular abstraction (such as object orientation) makes it hard to see when that abstraction is leading you to a solution that isn't the best alternative. This article is the first of two that explores some implications of object-oriented thinking for code reuse, comparing them to more-functional alternatives such as composition.
View entire articleThis tutorial presents a real-world example that integrates IBM Informix and ZK, a rich Internet application (RIA) framework. Informix is a flagship IBM RDBMS product, while ZK is a Java-based web application framework supporting Ajax applications. This event-driven framework enables creation of rich user interfaces with minimal knowledge and use of JavaScript. ZK's unique server-centric approach enables synchronization of components and events across the client and server via the core engine.
View entire articleThis tutorial highlights best practices when marking information to resources using markers, and then introduces annotations and decorators that you use to highlight markers within the workbench. By extending extension points, you can reuse and adapt the built-in functions in Eclipse and perform advanced resource marking, such as moving a text marker when editing text. We discuss methods that take advantage of the plugin model, which allows for an efficient, high performance, and integrated look and feel plugin.
View entire articleGretty is one of a new school of ultra-lightweight frameworks made for building web services. Built on top of the blazingly fast Java NIO APIs, Gretty leverages Groovy as a domain-specific language for web endpoints and Grape's Maven-style dependency management. In this article, get started with using Gretty to build and deploy Java web service applications.
View entire articleMashups4JFS is a tool that helps you easily create mashup programs in the JSF world. We continue our exploration with a look at creating RSS feeds for your application.
View entire articleImmutability is one of the building blocks of functional programming. This Functional thinking installment discusses the many aspects of immutability in the Java language and shows how to create immutable Java classes in both traditional and newer styles. It also shows two ways to create immutable classes in Groovy, removing much of the pain of the Java implementation. Finally, you'll learn when this abstraction is appropriate.
View entire articleWhile some proposed language features are simply a solution in search of a problem, most have their roots in real-world situations in which the existing features do not enable programmers to express what they want to say as easily, clearly, succinctly, or safely as they'd like. Although having a use case in mind -- "this feature enables me to write this code that I want to be able to write" -- is good, language designers also need to evaluate language features in light of the bad code they might also enable.
View entire articleAmazon RDS, part of Amazon's growing PaaS family, lets you increase your application's relational data storage capacity with just a few clicks.
View entire articleFor years, the Java zone has brought you top-quality technical content by some of the best minds in the industry. But taking the time to read an in-depth, code-heavy article can be difficult, even if it's about a topic that's critical to your day job. This new podcast series, led by the engaging and technically curious Andrew Glover, provides a new way to get information from the sources you trust most. Every few weeks, we'll publish a new discussion with an expert on the topics that are important to your job.
View entire articleUsing a new global property, you can now trap JVM exit or System.exit() upon completion of SQLJ tools like db2sqljcustomize and db2sqljbind, using the DB2 Universal JDBC Driver. This article explains the JDBC Universal Driver global property db2.jcc.sqljToolsExitJVMOnCompletion and shows how to use it. A sample Java application illustrates how to set the new property.
View entire articleYour Java code may be vulnerable to an exploit based on finalization. Learn how the exploit works and how to modify your code to prevent such an attack.
View entire articleFunctional thinking series author Neal Ford continues his guided tour of functional programming constructs and paradigms. You'll look at number-classification code in Scala and take a glance at unit testing in the functional world. Then you'll learn about partial application and currying -- two functional approaches that facilitate code reuse -- and see how recursion fits into the functional way of thinking.
View entire articleWith ever growing importance for data quality in growth markets, there is an immediate need to cleanse dirty, unstructured data. However one of the challenges during this exercise is that countries can have multiple languages that create a challenge for effectively handling linguistic data. For example, in India, the official language of each state is different and data is available in both English and local languages, which compounds the problem of data consistency. This article describes how to bring about consistency during the transliteration process, and to use IBM InfoSphere Information Server DataStage to prepare linguistic data as part of an extract, then transform and load an(ETL) scenario.
View entire articleLearn how SimpleDB works, understand its advantages and disadvantages, and see how to create a record, query data, and delete data.
View entire articleThis two-part article shows how to build a business process management (BPM) application that collects, displays, and uses data from a social-networking site. Part 1 shows how application connects to the Twitter web service and enables users to do a keyword search for relevant tweets. In Part 2, you'll finish configuring the application and interface it with a customer relationship management (CRM) system to put the search data to practical business use.
View entire articleMongoDB is a popular, open source, document-oriented database. This demo describes MongoDB, how it works, and where it's most applicable in your work.
View entire articleFunctional languages and frameworks let the runtime control mundane coding details such as iteration, concurrency, and state. But that doesn't mean you can't take back control when you need to. One important aspect of thinking functionally is knowing how much control you want to give up, and when.
View entire articleThanks to the flexibility of business process management (BPM) tools, you can integrate social networks into a company's business processes with minimal coding. This two-part article shows how an application built with Bonita Open Solution -- an open source BPM tool -- collects, displays, and uses data from social-networking sites. Part 1 shows how to configure the application to connect to the Twitter web service and enable users to do a keyword search for relevant data. In Part 2, you'll see how the application interfaces with a customer relationship management (CRM) system.
View entire articleIn this article, the authors outline the basic characteristics of cloud applications and Java Enterprise Edition applications, compare their similarities and contrast their differences, and then define a set of strategies and provide patterns to extend Java EE container and application with such cloud characteristics as parallelism, elasticity, multi-tenancy, and security.
View entire articleFunctional programming has generated a recent surge of interest with claims of fewer bugs and greater productivity. But many developers have tried and failed to understand what makes functional languages compelling for some types of jobs. Learning the syntax of a new language is easy, but learning to think in a different way is hard. In the first installment of his Functional thinking column series, Neal Ford introduces some functional programming concepts and discusses how to use them in both Java and Groovy.
View entire articleJava developers have historically perceived JavaScript as a toy language, both too lightweight for real programming and too clunky to be of use as a scripting alternative. And yet JavaScript is still around, and it's the basis of exciting web technologies like GWT and Node.js. In this installment of Java development 2.0, Andrew Glover explains why JavaScript is an important tool for the modern Java developer. He then gets you started with the syntax you need to build first-class applications for today's web, including JavaScript variables, types, functions, and classes.
View entire articleWS-SecurityPolicy lets you define security configurations as part of your Web Service Description Language (WSDL) service description. It's a powerful tool, but working with WS-SecurityPolicy documents can be painful. Assertions must be correctly structured to be effective, and version namespaces need to be consistent. In this article, you'll learn about common errors made in creating WS-SecurityPolicy documents, and you'll see how WS-Policy and WS-SecurityPolicy can be modeled in Java for verification and transformation.
View entire articleThe IBM WebSphere Application Server 7.0 Feature Pack for XML 1.0.0.9 Technology Preview offers some major new features, including support for XQuery modules, embedded extension functions, and source location information for runtime errors. These features help developers manage and work with queries and stylesheets, thus improving developer efficiency and reducing maintenance costs.
View entire articleThis article compares three major Platform as a Service (PaaS) offerings for Java developers: Google App Engine for Java, Amazon Elastic Beanstalk, and CloudBees RUN@Cloud. It analyzes each service's unique technical approach, strengths, and weaknesses, and also discusses common workarounds. Learn the basic concepts underlying Java PaaS and understand how to choose a service that suits your development needs.
View entire articleThe Apache OpenJPA project is an open-source implementation of the Java Persistence API, focused on building a robust, high performance, scalable implementation of the JPA specifications. This article introduces OpenJPA with a complete example of how to take advantage of some of these features using IBM WebSphere Application Server V6.1. Updated for JPA 2.0.
View entire articleAmazon Simple Queue Service (SQS) borrows what it needs from message-oriented middleware (MOM) but doesn't lock you in to any one implementation language or framework. Learn how to use Amazon SQS to alleviate the burden of installing and maintaining a message-queuing system, while leveraging the pay-as-you-go scalability of AWS.
View entire articleMemory Analyzer is a powerful tool for diagnosing memory leaks and footprint problems from the dump of a Java process. It can also give you detailed insight into your Java code and enable you to debug some tricky problems from just one dump, without needing to insert diagnostic code. In this article, you'll learn how to generate dumps and use them to examine the state of your application.
View entire articleOpenJPA is an Apache persistence project. One elegant feature of OpenJPA lets you speed up your lookups and reduce the load on back-end databases with a Java Cache with NO application code changes! This article will show you how to install, configure, and experiment with IBM WebSphere eXtreme Scale (XS) product in conjunction with OpenJPA. You can experiment with this without spending any cash, as the XS cache is available for free evaluation.
View entire articleAlex Ruiz introduces Project Lombok in this article, discussing some of the programming sugar that makes it unique, including annotation-driven code generation and clean, compact, and readable code. He then draws your attention to one of the more rewarding uses of Lombok: extending it with custom AST (Abstract Syntax Tree) transformations. Extending Lombok will enable you to generate your own project- or domain-specific boilerplate code, but it does require a fair amount of work. Alex concludes with his tips for easing through key stages of the process, along with a freely usable custom extension for JavaBeans.
View entire articleThis article shows how to access the CouchDB APIs using Clojure, a dynamic language for the JVM. Examples use the Clutch API and clj-http library in parallel to illustrate a higher-level CouchDB API and lower-level REST-based calls, respectively. The article will help the novice Clojure developer who wants to use CouchDB, and anyone interested in CouchDB's underlying REST APIs.
View entire articleFor those who want more control over their environment but like the plug-and-play scalability of PaaS, Beanstalk could be a good and welcome alternative to Google App Engine. Andrew Glover's guided tour of Beanstalk starts with a location-based mobile application (built using the Play framework and MongoDB), which he then ports to the Beanstalk environment. Configuring Beanstalk is both easy and rewarding, he finds, with choice and flexibility over and above what's offered by GAE.
View entire articleThe image parameters of an IBM Cloud image can be retrieved through a URL called "manifest" that is provided by the image description. The URL returns an XML response. In this article, the author explains how to transform that XML response into a Java-usable response by creating Plain Old Java Objects (POJOs) and calling JAXB's unmarshal method -- once you have this response, it will be easy for you to send requests to create new instances based on images that request parameters from Java classes.
View entire articleSeveral years after the approval of Web Services Description Language (WSDL) 2.0 as a World Wide Web Consortium (W3C) standard, WSDL 1.1 is still the most widely used form of web service description. Despite its popularity, WSDL 1.1 has some issues, including a variety of schemas in use and variations in how web services stacks process WSDL documents. In this article you'll learn how WSDL 1.1 service descriptions are structured. You'll also see the basic structure of a Java tool for verifying WSDL documents and transforming them into a "best practices" form.
View entire articleJEST unites two architectural styles -- Representational State Transfer (REST) and the Java Persistence API (JPA) -- to let language-neutral remote clients transact with JPA-based applications following REST principles. JEST models customizable persistent closures of managed entities as REST resources and represents them in XML or enhanced JavaScript Notation (JSON) format to account for the cycles in an object graph. This article explains JEST's concepts. Then it introduces a demonstration implementation: a generic web client that communicates with a server to query persistent objects and browse a persistent domain model in domain-agnostic fashion.
View entire articleIBM Optim Development Studio and the pureQuery Runtime include a command-line utility called ManageRepository that can be used to create, modify, export, import, and delete pureQuery metadata that is stored in the SQL management repository. Setting up an SQL management repository can be challenging using the ManageRepository utility command script. This tutorial shows you how to create and manage an SQL repository using an Ant script. You will also learn how to run the Ant script from within IBM Optim Development Studio.
View entire articleMorphia is a type-safe, object-mapping library for MongoDB, an open source document-oriented database. This article explains the benefits of mapping documents to and from objects and shows how to use Morphia for this purpose. Then it demonstrates how to persist, load, delete, and query a Java domain model mapped to MongoDB.
View entire articleHow can you tell when emergent design is suitable? This final installment of Evolutionary architecture and emergent design discusses the suitability of emergent design for various types of projects and how to tell when to make decisions. It concludes by recapping some of the series' key points.
View entire article