Asia/Pacific Computer Services - link to home page
AsiaPac

Asia/Pacific Computer Services  
USEFUL LINKS - Programming Languages. Tools, Training, Systems Theory & Thinking
 

Search for other topics, tips, news, technical information...
How to search - click here for tips about performing effective searches.
We highly recommend PicoSearch
Click to view Asia/Pacific Computer Services products, services. and alliances.
Our information-crammed links ... Tips, Tools, Techniques, Services, Resources for Operators, Designers, Developers, Contractors, Consultants, Managers, Marketeers - and general users
Add this Asia/Pacific Computer Services page to your browser's list of Favorites.Our own selection of important IT news items, interesting developments and tips, plus key guides for IT managers, web designers, programmers, security administrators and more!Send an e-mail to a friend or colleague about a product, service or resource described on our web site."Love me and leave me!" ... Please give this web site a rating. Use the e-mail link (at the top of this page) to give us more detailed feedback, and help us make the site better.
Contact us using Skype ... Click this button to start a Skype call.
You must have Skype installed on your computer.
          - - - - - - - - - - -
Our user name for Skype is "notestracker"
(also for MSN Messenger, Yahoo Messenger, and ICQ, but we don't always have these running). (click this button to call)

Our Weblogs ...
Notes Tone Unturned ~ Basic Questions ~ NotesTracker news
~ Leave Good Enough Alone


QUICK LINKS FOR THIS PAGE

PROGRAMMING IN GENERAL - STANDARDS BODIES - USER GROUPS

The young man is smoking and blowing smoke rings.  His irritated girlfriend says, "Can't you read the warning on the cigarette packet that smoking is dangerous for your health!!" The boyfriend responds, "Darling, I'm a programmer.  We only worry about errors. We ignore warnings."

There are 10 types of people in this world. ... Those who know binary and those who don't.

Why did the programmer always confuse Christmas and Halloween? ... Because Dec 25 equals Oct 31.
"In ancient times they had no statistics so they had to fall back on lies." ... Stephen Leacock

The Joy of Tech
The Joy Of Programming
Teach Yourself Programming in Ten Years - Why is everyone in such a rush?
and The Evolution of a Programmer - from High School through to CEO!
52 Reasons Why Programmers Work On Weekends
5 Things that Really Make a Senior Developer
------------------------
Curriki - your world of open source educational resources and curricula.
So, you think you're a good programmer, do you? ... Take the data literacy test!
------------------------
"Any programming language is at its best before it is implemented and used."
------------------------
Epigrams on Programming - such as: "Every program is a part of some other program and rarely fits."
How To Write Unmaintainable Code -- Ensure a Job for Life
How to Write a Banking Application
------------------------
Sometimes, The Better You Program, The Worse You Communicate - Good programming practices are directly opposed to good communication practices.
------------------------
Google Code Search - Search public source code, using search strings or regular expressions -- and it can be quite surprising what you find!
Also: Google Wrecked the Internet
------------------------

 THE SOFTWARE DEVELOPMENT PROJECT 
  How the customer wanted it, and what he got instead 

The classic comic strip...
(Click to see a larger image)
(Click to see a larger image)


------------------------
"Every program has at least one bug and can be shortened by at least one instruction -- from which, by induction, one can deduce that every program can be reduced to one instruction which doesn't work."
------------------------


errorwear ... T-shirts that fuse geek culture with high fashion.
"Be the envy of anyone who has ever crashed."
------------------------
Monsters of the Programming World
------------------------
 
The C Family of Languages: Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling (published in 2000)

Bugs are expensive to fix: Software Engineers Aren't Doing Enough To Really Create Error-Free Software
Are YOU willing to "stand under the bridge you designed"? (Read the full article to find out what this signifies.)
"Testing can only prove the presence of bugs, not their absence. ... Testing therefore is not the verification that a program works, but a search for whatever bugs can be found within the time and scope constraints of its execution. ... If debugging is the process of removing bugs, then programming must be the process of putting them in."

 

The Reality of Bad Programmers
"There aren’t bad programmers, there are bad programs… and even those often aren’t “bad” if they are taken into context. ... Why is this still a problem? After over fifty years of code, we still cannot figure out what makes a program good!"

"Over the last 20 years, programmers around the world have been hard at work building abstraction upon abstraction on top of the IBM-PC to make it easier to program and more powerful. ... But the Law of leaky abstractions means that even as they built the abstractions that are supposed to make programming easier, the sheer amount of stuff you have to know to be a great programmer is expanding all the time. ... Becoming proficient, really proficient, in just one programming world takes years. Sure, lots of bright teenagers learn Delphi one week and Python the next week and Perl the next week and think they are proficient. Yet they don't have the foggiest clue how much they're missing. ... There are a lot of programming worlds, each of which requires a tremendous amount of knowledge for real proficiency."

Quoted from:
Lord Palmerston on Programming  -- an article by Joel Spolsky
(for more, see also: Joel on Software below)

"The pure and simple truth is rarely pure and never simple. -- Oscar Wilde
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." --
Antoine de Saint Exupery (French Poet, 1900-1940)
 

Why Software Sucks (a Dr. Dobb's podcast)
Author David Platt has some theories about why users are so frustrated with current software. Ultimately, he says, it's all down to losing touch with what users care about.
 

Ethics and software development
"The ethical issues involved in managing and developing information technology are many, and they are increasingly complicated by the power of individuals and infrastructures."


Butler Group >> Application Development for Mortals
"Some of us remember attempts in the late 80s and early 90s to bring a human face to the business of developing applications. A variety of suppliers developed fourth generation languages (4GLs) that could supposedly be used by non-programmers to build systems. The fact that very few of these products are used today is a measure of how successful they were. ... What happened after the era of the 4GL was something of a backlash. Instead of the fluffy, cuddly 4GL we saw the emergence of  C++ and Java as the dominant programming languages – indecipherable and totally unfriendly. Java has spawned the Java 2 Enterprise Edition phenomenon with dozens of protocols, standards and skills that need to be acquired – to the point that it is pretty well beyond the scope of any single individual to master the whole lot. C++ has acquired the accolade of being the world’s first write only language – because it is impossible to read. ... In most organisations the job of application development has become something of a secret esoteric art. ... The focus of the CIO is therefore turning away from the details of technology, such as server availability, network performance, and application functionality, towards more strategic issues, such as IT budgeting and investment planning, governance, service quality and availability, IT risk management, and offshore development. However, in contrast with other business functions, there has been a distinct lack of both tools and methodologies to assist in adopting this strategic view. The dichotomy for CIOs is therefore that whilst they are keen to move their IT departments up the organisational value chain, and to increase their own contribution to the business, there is still a distinct and substantial separation between the business, financial, and technology views of the IT department. ... I consider that deploying an IT investment planning and control system, and adopting a formal methodology to manage the associated processes, is the single most effective step that an organisation can take to improve the accuracy and validity of its IT investment strategy. ..."
 

Accomodate really simple user and programmer models (the KISS approach)
Adam Boswprth writes: "It is an ironic truth that those who seek to create systems which most assume the perfectibility of humans end up building the systems which are most soul destroying and most rigid, systems that rot from within until like great creaking rotten oak trees they collapse on top of themselves leaving a sour smell and decay. We saw it happen in 1989 with the astonishing fall of the USSR. Conversely, those systems which best take into account the complex, frail, brilliance of human nature and build in flexibility, checks and balances, and tolerance tend to survive beyond all hopes."

What's New Is Old Again - "How little regard or study we give to the history of our profession."
"Those who do not remember the past are condemned to repeat it." - Santayana


A contrary opinion, bucking the fashionable trend:
The Internet Changes Nothing
"What matters is that it doesn't fundamentally change a thing... no way, no how will it ever 'change everything'..."

A Computer Geek's History of the Internet

Windows XP Service Pack 3 Revealed

The Matrix - movie special effects using only ASCII characters

Granny's Pearls of Coding Wisdom
Software Development Risks
 

The Pessimistic Programmer - "a good programmer needs to be pessimistic; always thinking about what can go wrong and how to prevent it."
 

A Developer’s Guide to Surviving Meetings
Did you know that there's only one type of meeting you literally need to survive?
 

THE DAILY WTF - "Curious Perversions in Information Technology"
Programmers top 10 sentences

DesiBoyz Masala >> Techie Jokes >>
An old man was sitting in a park reading the book "Learn C in 21 days" ...
 

Help is at hand! (click on this link)


[ Back to Top ]

SD Times, the industry newspaper of record for software development managers

  • The Open Group - "a vendor-neutral and technology-neutral consortium, whose vision of Boundaryless Information Flow™ will enable access to integrated information within and between enterprises based on open standards and global interoperability." (Open standards, not necessarily open source.)

  • Open Source Middleware ... Breaking the rules with open source and Open source's next frontier - Open source software, increasingly popular with budget-conscious companies, is beginning to expand into a new area: The lucrative infrastructure-software market dominated by industry giants such as Microsoft. Individual open-source database and other applications are already popular. Now two open-source projects have launched efforts to assemble "stacks" of software applications that offer an open-source equivalent to commercial software from Microsoft, IBM, Oracle, BEA Systems and others. ... Though it's too soon to tell just how much these new stacks will shake up the multibillion-dollar market for back-end software, it's clear there's a growing number of open-source alternatives to commercial software makers' most profitable products.
  • Suites, Open Source Shake Up Application Server Market

  • WHATWG - Web Hypertext Application Technology Working Group - a loose unofficial collaboration of Web browser manufacturers and interested parties who wish to develop new technologies designed to allow authors to write and deploy Applications over the World Wide Web. ... The term "Web Application" in this context refers to applications accessed over the World Wide Web by using a Web browser. (This group is not attempting to describe APIs for writing high-end sophisticated programs such as office productivity suites, graphics manipulation packages, or 3D games.) This working group aims to make their development easier, and hopes to specify new technologies that make it possible to make much prettier and more usable interfaces with less dependence on complex scripts, less dependence on server-generated pages, and a more seamless user experience.
    • Web Applications 1.0 - Working Draft - "The main area that has not been adequately addressed by HTML is a vague subject referred to as Web Applications. This specification attempts to rectify this, while at the same time updating the HTML specifications to address issues raised in the past few years."
       
  • The Economics of Programming Languages - the author hopes "to give language users some insight into selecting a language that best suits their needs." and to "also help language designers and advocates to better market their products by giving them a common language, that of economics, to discuss the challenges and opportunities inherent in the market for computer programming languages."
     
  • COBOL ... El lenguaje Inmortal - COBOL is far from dead! This Argentinian community site has many COBOL resource links, together with some online demonstrations.
     
  • Michael Yuan's Java Blog: "Is Ruby Replacing Java? – Not So Fast" -- This kind of talk has some serious logical problems. First of all, as the short history of high technology has proven again and again, the "superior" solution does not always win over "inferior" ones. ... The reason, in economics terms, is that the choice of a technically "better" programming language does not bring you competitive advantage in terms of overall cost and productivity. ... for rich UI application developers, the dominant languages are still C / C++ / VB. Even heavily marketed languages like C# and VB.Net have little traction -- let alone Java.  ... One language does NOT replace another one. The rise of a new programming language always comes with the opening of a new application area and an influx of new developers who are willing to try out a new language -- since there is simply no incumbent language in this brand new area.


  • Source Code Indemnity - You and your insurance company had better share a common understanding of what protection you've bought, against what hazards, for any source code on which your organization depends. ... "If you have multiple copies of your code that you lose in separate events and even one of those events is not your insurer's problem, then you might be completely out of luck—if it's found that you suffered no harm at all until the last, uninsured copy was lost."


  •  
  • Survey suggests new computers will drive up software costs - major changes in how computers are designed and used (such as multi-core processors and shared on-demand usage) are underway and few software makers are preparing for it. The fact that all four are happening at the same time is a recipe for software pricing mayhem.

  • Re-negotiate software license deals now - Emerging trends in IT hardware could force software licensing costs up by more than 50 percent over the next year, unless businesses renegotiate existing contracts now. Gartner claims the move to multicore-chip architectures, virtualized hardware and utility computing threatens existing capacity-based, or CPU-based, licensing agreements offered by the major software vendors.



  • The EUSES Consortium - "End Users Shaping Effective Software" - They state: "Errors are pervasive in software created by end users and the resulting impact is sometimes enormous. ... We do not propose to transform end users into engineers. Rather, our plan is to enable systems to create software to collaborate with those users, in a software development paradigm that combines traditionally separate functions -- blending specification, design, implementation, component integration, debugging, testing, and maintenance into tightly integrated, highly interactive environments."



  • Elbrus - a provider of custom test automation solutions for development, manufacturing and service stages of the product life-cycle...
  • Debugging For Dummies - Computer bugs can mess up just about anything and be costly to the economy ... But they're difficult pests to eliminate, because doing so requires programmers to perform "an elaborate detective investigation."

  • Learn the essentials of debugging - Systematically take on mysterious errors with confidence ... Debugging software is challenging. Without a process to follow, resolving problems can seem impossible. Most inexperienced programmers find themselves in precisely that situation when confronted with a bug. In this article, walk through a sample problem-solving session to learn the art of debugging and highlight six essential elements of the debugging process.

  • A Guide to DEBUG (the Microsoft DEBUG.EXE program)

  • The first rule of debugging - "The mistake is in failing to be sure that the program that they are trying to debug is actually the program that they are running."
    and then there's
    The zeroth rule of debugging

  • Introduction to Power Debugging - "If you know how to use them, even the simplest of debugging tools can be powerful."

[ Back to Top ]

  • Put Your Apps to the Test - "As smart as the people are who design the code and the systems, the systems are complex enough that if you don't get to see how they all interact before you field the code, you're usually in for a horrible embarrassment." ... That sort of commentary points to the need for application performance testing software-along with the expertise to apply it correctly. Rapidly increasing user loads, wildly complex software and distributed development that includes worldwide outsourcing all ratchet up the need for more and better application testing processes and tools. ... Purchasing a performance testing package, creating tests, running them and interpreting the results is one way to beef up your software application testing process. However ... a good software performance testing strategy requires a degree of expertise that many companies lack.


  •  
  • Compliance-driven development: the IBM Compliance Resource Kit - can help teams adopt a proactively prepare for an audit of their software development environment. IBMM created this Compliance Resource Kit to help project managers and testers improve the functionality, usability, reliability and scalability of their software applications.



  • Software Crashes Deserve a Closer Look - An airplane crash triggers a painstaking investigation. But when software fails, the user is told to hope that it works the next time. "Is this any way to run an airline?"
  • Software Testing Shouldn't Be Rocket Science - "Good testing is about attitude, where a developer takes pride not just in the elegance or volume of his or her code, but in whether it meets the user's requirements and performs reliably in its first incarnation."
     
  • 64-bit Computing with Intel EM64T and AMD AMD64 - There are now three 64-bit implementations in the “Intel® compatible processor” marketplace -- Intel IA64 (as implemented on the Itanium 2 processor), Intel EM64T(as implemented on the Xeon DP “Nocona” and future Xeon MP processors), and AMD AMD64 (as implemented on the Opteron processor). There is some uncertainty as to what a 64-bit processor is and even more importantly, what the benefit of 64-bit computing is. This document introduces the EM64T and AMD64 architectures and explains where 64-bit processing is useful and relevant for customers in this marketplace.


  •  
  • GripeLog - "a place where customers of technology products can air their beefs with vendors and read about the problems and issues other customers are raising."
  • This Is Broken - places, things, and websites that are just "broken"
  • Annoyances.org


  • Systems Must Be Designed to Doubt - What about building systems that don't take the normal routine for granted? What about building systems that don't merely repeat what they've been told, but that ask semi-intelligent questions about what's going on around them? And that know an unbelievable answer when they hear it? ... In the long run, technology has to improve service to the highest level that still leaves room to earn a reasonable rate of return while offering services at a competitive price. ... When online systems lie to customers, or when errors in those systems waste the time of both customers and employees, then the negative good will that results is expensive. Web services enable a wealth of customer-facing systems, but they also raise the bar for the level of reliability and self-knowledge that those systems must possess.
  • Using Threat Analysis to Design More Secure Systems - See how to design and build more secure systems by evaluating threats and selecting technologies to counter those threats.
     
  • The i-Technology Right Stuff - Searching for the Twenty Top Software People in the World and Sung and Unsung i-Technology Heroes and Who's Missing From the i-Technology Top Twenty?
     
  • Sticks and Stones: Who Needs "Hardship Programming"? - It's time we all got beyond such rites of passage.
     
  • "Things I Wish I Learned in Engineering School" (book by Rick Cattell) - about "pitfalls that engineers should be aware of in their careers, e.g. to avoid spending years working on projects that don’t succeed as products." ... and the associated university talk, covering the most important rules from the book: online at Carnegie-Mellon University and the University of Illinois. The slides for the talk can be found here.
  • The Things I Wish I Learned in Engineering School - a conversation with Sun Microsystems Distinguished Engineer Rick Cattell
     
  • What makes a good Programmer? - "All programmers should be Analyst/Programmers; they might have a 'big A' and a 'little p' - the emphasis being more on the analysis side – or a 'small a' and a 'big P' with the emphasis on the programming side."
  • Top 5 Attributes of Highly Effective Programmers
     
  • The Next Move in Programming - a conversation with Sun's Victoria Livschitz - "Here's what's really sad -- the overwhelming majority of so-called successful development projects produce mediocre software." ... The parallel between chess and programming is rather obvious. Programming is also about knowledge, creativity, and technique. Good programmers must have a vast body of knowledge at their fingertips: the programming syntax of one or more languages, standard and special-purpose data structures, typical (as well as advanced) coding techniques, many kinds of libraries and APIs, a multitude of design patterns, and so on. Good programmers use their creative vision to recognize many patterns that may be relevant to the solution of the specific design problem at hand, and correctly choose the best approach. Finally, no matter how good the architecture and design are, to deliver bug-free software with optimal performance and reliability, the implementation technique must be flawless."
     
  • Confessions of a Used Programming Language Salesman (Getting the Masses Hooked on Haskell) - Erik Meijer writes: "After a long journey through theoretical computer science, database theory, functional programming, and scripting, abstract concepts such a monoids, lambda-expression, and comprehensions have finally reached the day-to-day world of ordinary programmers. The LINQ framework effectively introduces monads, monad comprehensions, and lambda expressions into the upcoming versions of C# 3.0 and Visual Basic 9. ... This paper is a personal account of my journey to democratize the three-tier distributed programming problem. It starts with my attempt to use Haskell as the language to write threetier distributed data intensive applications, then continues with my brief flirtation with the Internet Scripting Language Mondrian, the C! language, the LINQ framework and C# 3.0 and Visual Basic 9, and ultimately comes to a happy end with my devotion to Visual Basic."
     
  • The Serious Games Initiative - is focused on uses for games in exploring management and leadership challenges facing the public sector.
     


  • PROGRAMMING FOR KIDS ...
    • Tomorrow's programmers, tools and e-learning - Interactive games and simulations may make online learning fun but they add significant cost and production time. But this will not always be the case.
      • Game Maker - "Did you always want to design computer games? But you don't want to spend a lot of time learning how to become a programmer? Then you came to the right place. Game Maker is a program that allows you to make exciting computer games without the need to write a single line of code. Making games with Game Maker is great fun. Using easy to learn drag-and-drop actions you can create professional looking games in little time. ... What is best, Game Maker can be used free of charge. And you can use the games you produced in any way you like. You can even sell them!"
    • Kid’s Programming Language (KPL) ... "designed and developed based on the principle that programming is fun." -- KPL is available as a freeware download from: www.kidsprogramminglanguage.com and here's an Overview of KPL for parents
    • Scratch - a programming language (for Windows and Mac) that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web. Scratch is designed to help young people (ages 8 and up) develop 21st century learning skills.

[ Back to Top ]


Bruce Eckel
  • Computing Thoughts - weblog (focuses on software development productivity improvement)
  • Free Electronic Books - these HTML books are fully indexed, use Frames for easy navigation through the chapters, and have color syntax highlighting on all the source-code listings. Each HTML download contains an entire book and source code in a single zipped file:
    • Thinking in C++
    • Thinking in Enterprise Java
    • Thinking in Java, 3rd Edition (1st and 2nd editions also available)

    • Thinking in Patterns
    In our opinion, these books represent a masterly effort. Thank you Bruce!

[ Back to Top ]

[ Back to Top ]

[ Back to Top ]


SOFTWARE - TECHNOLOGY & DIRECTIONS
 


  • Is Computer Language Popularity Important? - Ever since the language wars were about COBOL versus PL/1, developers have argued about which one is "best." Best for what, though?

  •  
  • Are Software Quality Problems Costing Your Company? - Understanding how much you are spending on quality problems is an important first step to improving results. "Many organizations assume that higher quality costs money and takes more time. ... [but] ... software process improvement generates average results that are far from ordinary: an 80 percent reduction in post-release defects and a 65 percent increase in productivity, while reducing project schedules and costs by 20 percent."
     
  • How to Guarantee Product Failure - the top five mistakes that product managers can make to ensure their products fail.
  • Users Want Freedom to Be Wrong - System designers should understand that users won't let dumb machines decide what risks to take for them.
     
  • You Are Not Done Yet: Setup - You are not done testing yet unless you have tested your program's setup process. Some conditions are specific to Microsoft Windows, but other operating systems generally have similar considerations.


  • IBM developerWorks >> Web Architecture
    Quality Busters - articles, such as ...
    • Treat everyone equally - Test your app and its efficiency on old and new systems -- not all your users will have fast and powerful system resources. (Recognize differences between developer and end user environments.)
    • Not measuring the risks - Failure Modes and Effects Analysis (FMEA) and risk assessments, as important tools for business software architects. (Even business software can have safety concerns. An improperly processed financial transaction might cause long-lasting harm to a customer or to the business itself.)
    • Coding by assumption - Is your application ready for the latest version of the operation system it runs on or the program product on which it depends? Will you have to modify your application to upgrade? Have you made assumptions about the operating environment? These and other questions are easier to answer if you build portability into your application -- even if you do not plan to run it on another platform. One key to portability lies in not making any assumptions.
    • What version is it anyway? - Modern applications are built using many shared components, including dynamic link libraries (DLLs), JAR files, and runtime environments. Keeping track of these components, their versions, and their dependencies creates development and operational issues. This article discusses some of those issues and the considerations that arise from the use of components.
    • Make your error messages meaningful - Many applications treat users as if they were programmers. Messages that report errors are often cryptic, contain meaningless codes, and provide no help regarding what to do next. While the developers who wrote the application can use those messages, most users are left with one option: call the help desk. This article describes a more appropriate kind of error message for users: one that includes description, cause, and recovery steps.


  • Selenium - a test tool for web applications, developed by team of programmers and testers at ThoughtWorks. "Selenium tests run directly in a browsers, just as real users do. And they run in Internet Explorer, Mozilla and Firefox on Windows, Linux and Macintosh. No other test tool covers such a wide array of platforms. ... Selenium uses a unique mechanism which allows it to run on so multiple platforms."
    You can use Selenium for:
    • Browser compatibility testing. Test your application to see if it works correctly on different browsers and operating systems. The same script can run on any Selenium platform.
    • System functional testing. Create regression tests to verify application functionality and user acceptance.
     
  • Simunication - a rapid-design web application prototyper designed online using Simunicator to enable users to visualize and test drive the application before the formal development process begins. You can use the design editors to build the prototypes or upload your own HTML, CSS, Flash, script, etc. (Free, Basic, Pro and Team editions available.)
     
  • www.genetic-programming.org - a source of information about the field of genetic programming and the field of genetic and evolutionary computation.
  • Evopedia - an experimental website that contains information about various topics. It is basically an online encyclopedia with one major difference: nobody wrote it. The content was created by employing genetic algorithms - a method used by computer scientists to find an optimal (or at least near-optimal) solution to a problem. Specifically, genetic algorithms use the principles of evolution to take nowhere near optimal solutions to a problem and turn them into better and better solutions until you have a solution that is "good enough".


  • SOFTWARE PATENTS / FREE SOFTWARE ...
    • The League for Programming Freedom (they are opposed to software patents)
    • Quotations on Software Patents
    • Stop Software Idea Patents in Europe - "Special interests are manipulating the political process in the European Union in an attempt to introduce restrictive, costly US-style software patents. Please see How you can help us stop Software Patents to learn how to protect the rights of European software users and developers."
    • Patents and the Penguin - "The software patent is viewed by both proponents and detractors of Linux as a serious threat to the well-being, and perhaps the survival, of the Linux community."
    • Patents Should Meet BASIC Tests of Reason
    • Patents 'pose equal threat to all software' - Patents pose equal danger to all classes of software and in some cases the free and open source genre may have less to fear.

    • Where Are the Flying Cars? - "By continually mystifying and shrouding computers as the realm of the geek and the nerd and creating ridiculous user interfaces, they [movies] perpetuate the idea that computers should be hard to use. The syllogism is that if programmers create hard-to-use applications, they are somehow creating a sophisticated piece of software. Nothing could be further from the truth - the GUI is all about simplicity through sophistication."
    • Openwares.org - a public Open Source and Freeware software development web site, providing free publishing, packaging, hosting, and marketing services to individual developers.

  • Getting on the open road - J2EE fundamentals for .NET developers - first of a three-part series of roadmaps designed to assist developers of .NET, Windows client/server, and ASP applications make the jump to the Java platform.
     
  • SSW - Superior Software for Windows
    Rules to ...
  • Making the Right Software Investment - follow these guidelines to find software that fits your company's needs.
  • TextMaestro (text conversion tool) - "a powerful, versatile tool for handling, formatting, and converting text with a built-in FTP client. ... you can master any text conversion project, no matter how large it is."

  •  
  • Script Injection Makes Phishing Harder to Catch - Cross-site scripting (XSS) attacks have become one of the better-known Web security vulnerabilities over the past four years, but they are still easy to carry out on large sites handling sensitive information, such as major banks. ... They make phishing attacks — which attempt to swipe user login information — harder to spot, even for the most alert users. And while they are simple for site designers to prevent, the errors seem to keep slipping through.
  • Application Vulnerability Description Language (AVDL) - security vulnerabilities for Web Services and Web applications are addressed by this new OASIS standard

  • ThinkGeek - creates and sells "stuff that would appeal to the thousands of people out there who were on the front line and in the trenches as the Internet was forged. From programmers, engineers, students, lovers of open source, to the masses that helped create the behind-the-scenes Internet culture. ThinkGeek started as a way to serve a market that was passionate about technology."


  • Evaluating Time to Payback - Open Source vs. Proprietary development - Assess whether it would be more valuable to use proprietary software to develop new applications rather than an open-source development language such as Java. The key concern: The lines of new code his staff would have to create in each case. Will the proprietary software significantly reduce the amount of code your staff have to write and support?

  • Visual Paradigm for UML (VP-UML) - a cross-platform visual UML modeling and CASE tool. Version are available for Eclipse, Borland JBuilder, NetBeans and Visual Studio .NET -- and there's even a free Community Edition.
  • LogicLibrary >> Logidex - a software development asset (SDA) mapping and discovery engine that represents inherently complex, enterprise application environments in a graphical, intuitive way.


  • Software's clogging up the system - "We are all familiar with Moore's Law. It is one of the tenets upon which the great promise of the technology age rests. ... However, even with the dizzying speed at which today's machines can process, computing technology isn't delivering the exponential uptick in business productivity, profitability and innovation that Moore's Law promises. Why is this?"
  • Use continuations to develop complex Web applications - The approach discussed in this article could simplify your Web application development efforts. It explains what is a "continuation", and demonstrates the programming style called Continuation Passing Style, or CPS, in which no function is ever allowed to return.
  • The Computer Science Teachers Association - a membership organization that supports and promotes the teaching of computer science and other computing disciplines. CSTA provides opportunities for K-12 teachers and students to better understand the computing disciplines and to more successfully prepare themselves to teach and learn.

[ Back to Top ]

  • Joel on Software  
  • When good interfaces go crufty
  • The New Adventures of Verity Stob - Verity has developed a new tool that will help you make rapid diagnoses of sick PCs. A rolling computer gathers "cruft."
     
  • In the Beginning was the Command Line - "Ditching an worn-out old OS ought to be simplified by the fact that, unlike old buildings, OSes have no aesthetic or cultural merit that makes them intrinsically worth saving. But it doesn't work that way in practice."
     
  • Classic Texts In Computer Science
     
  • Software's common DNA - five species of application that seem, at first glance, to have little in common.
  • The Future of Software - "A Land Where Giants Rule ... CIOs put their careers on the line in a desperate guessing game ... Innovation Dries Up ... Open-Source Slays Goliath"
  • What's holding software back? - "The arc of software progress is defined not by increasing speed or capacity, but by the growing complexity of the data, events, messages, and relationships flowing through software systems. We deal with that complexity by layering abstractions on top of abstractions. A file system abstracts block device drivers; the Java and .NET virtual machines abstract CPUs. It's a brilliant strategy. We get to focus on the higher-order abstractions and pretend that the primitive ones don't exist. But in reality they still do. Nothing that's been hidden ever really goes away. And when abstractions leak, as they always do, things can get messy."
  • Technicians 5, Managers 0 - "What we have is a small family of languages that in most respects owe their origin to C - called the world’s first write only language (since no one can read it). Java, C++, and C# do pretty similar things and they are all equally obtuse, terse, and not the least bit representative of the jobs they often [called upon to] do. ... That organisations around the globe are employing technical staff that use languages such as C++ and Java is a triumph of technology smoke and mirrors over a common sense need to have programming languages that mere mortals can read and understand."
     
  • Artima Developer - "A community of programmers who care about their craft"
    • Artima Interviews - Excellent!
      For example, interviews with The Pragmatic Programmers (Andy Hunt and Dave Thomas, authors of the best-seller about software best practices, The Pragmatic Programmer: From Journeyman to Master and who (Addison-Wesley, 2000), and who helped to write the Agile Manifesto:
      1. Don't Live with Broken Windows - the importance of software craftsmanship and the importance of staying on top of the small problems in your projects.
      2. Orthogonality and the DRY Principle - the importance of keeping your system orthogonal, and the real meaning the DRY, or Don't Repeat Yourself, principle.
      3. Good Enough Software - the myth of bug-free software, the importance of specifying level of quality as a system requirement, and the need for every team member to inject quality throughout the development cycle.
      4. Abstraction and Detail - an approach to design in which details are pulled out of the code and stored as metadata.
      5. Building Adaptable Systems - reversible design decisions, the cost of change curve, going beyond the requirements, and making systems configurable.
      6. Programming Close to the Domain - the benefit of programming in a language close to the business domain.
      7. Programming is Gardening, not Engineering - a gardening metaphor for software development, the reasons coding is not mechanical, and the stratification of development jobs.
      8. Tracer Bullets and Prototypes - the importance of getting feedback during development by firing tracer bullets and building prototypes.
      9. Programming Defensively - the importance of programming defensively against your own and other's mistakes, of crashing near the cause, and understanding the proper use assertions.
      10. Plain Text and XML - the value of storing persistent data in plain text and the ways that XML is being misused.

  • Manageability - Because Every Complicated Technology Needs It - this website, says Carlos E. Perez, "has become my personal research notebook on the web. It covers areas revolving around the manageability of complex software systems."
  • Scaling Over Time - The Version Problem -- see how to solve the problems surrounding management of a system's changes over time.

  • Take Time to Look Inside Your Data - Y2K isn't the only type of date/time wraparound problem: GPS messages and other standard formats may have obscure limits and unexpected behaviors. What limits are built into the data structures that your applications rely on? How robust are your devices and applications for handling such matters?

  • What Developers Really Want - "To build Web apps, significant numbers of programmers favor such humble scripting languages as VBScript and Perl. Contrary to the hype that says Microsoft .Net and the Java elite have a lock on the programming world, many developers have settled on cheaper (and often faster) ways to build the Web applications they need to build."

  • Planners and Doers - "There is a fundamental dichotomy in the information industry that I think is the source of the vast majority of frustrations for both general users and IT professionals. This split is often confused with the marketer/technician conflict  ... Managers who also do, or at least have a history of doing, show a substantially greater capacity for dealing with technicians."

  • Lies, Damned Lies and Requirements - "Unfortunately, most CIOs today confront clients and colleagues who have allowed the perverse economics of requirements to create unrealistic expectations and dysfunctional business behaviours. Requirements should be a means to an end, not the end itself."
  • Development madness - Requirements are unclear, but coding continues as your team strives to hit deadlines. Could agile methods help ensure project success?

[ Back to Top ]
 

[ Back to Top ]
 

[ Back to Top ]

[ Back to Top ]
 

[ Back to Top ]

 

[ Back to Top ]


IT Toolbox -- "The Ultimate Information Technology Knowledge Base" ITtoolbox
Code
Exchanges
Siebel - Oracle - PeopleSoft - SAP - Linux - UNIX - Wireless - EAI (COBOL, XML, EDI) - Java & JavaScript - C Language - (C, C++ and C#) - Visual Basic - Web Design - (ASP, PHP, ColdFusion, Perl, Python, HTML)
ITtoolbox White Papers

[ Back to Top ]

EDUCATION,  TRAINING,  TESTING,  CERTIFICATION
LEARNING  SITES


[ Back to Top ]

SYSTEMS THEORY & THINKING - ARTIFICIAL INTELLIGENCE
FUZZY LOGIC - INTELLIGENT AGENTS - GAME THEORY - PROBLEM SOLVING
See also: Murphy's Law

An interesting definition ...
Hypercomplex System - where "The description of the system is more difficult to understand than the system itself."

[ Back to Top ]
 

[ Back to Top ]


JAVA (and Java versus .NET)
 

  • Java Security Traps Getting Worse
  • 12 Java Technology Security Traps and How to Avoid Them >> View the PDF
  • The Java Open Review Project - identifies and reports bugs and security vulnerabilities in widely used Java open source software. The risks from unknown security vulnerabilities and quality bugs in open source code pose a problem for the open source community and for consumers of open source software.
     
  • Total cost of ownership: A comparison of C/C++ and Java
     
  • FindBugs - a program which uses static analysis to look for bugs in Java code.
     
  • The Art and Craft of Great Software Architecture and Development (with an emphasis on Java/J2EE)
     
  • Kick-start your Java apps - Download and learn free software for rapid results:
  • Collected Java Practices / javapractices.com - concise presentations of Java practices, tasks, and designs, illustrated with syntax-highlighted code examples. 
  • 10 Commandments for Java Developers - outlines ten most basic rules that every developer must adhere to and the disastrous outcomes that can follow if these rules are not followed.
     
  • Finding the Best Value in Java IDEs (May 2006) - In an era of open source and free tools (such as Eclipse and NetBeans), cost and developer productivity weigh heavily on making an IDE choice. ... "Value doesn't mean the number of features or ease of using those features, but rather by productivity in performing specific common tasks that developers do daily, and the cost of that productivity in terms of the product and support cost. As the cost of tools continues to drop, and there is less differentiation between core features, value and productivity are coming to the forefront as key differentiators in tool selection and use. The equation has been complicated by the availability of free and open source integrated development environments (IDEs) such as Eclipse and NetBeans. At first glance, the best value might seem to be delivered by the free solutions. However, free doesn't necessarily translate into productive. It is likely that the most expensive part of the development process is the developer's salary, so optimizing the use of time is a key consideration."

  •  
  • History of Java EE (at IBM developerWorks)

    Get to know Java EE 5 - at IBM developerWorks


  • TIOBE Software >> Java wins Programming Language of 2006 Award - The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the world-wide availability of skilled engineers, courses and third party vendors. The popular search engines Google, MSN, and Yahoo! are used to calculate the ratings. Observe that the TPC index is not about the best programming language or the language in which most lines of code have been written.
     
  • The Java Platform - First Five Years in Review (1995 to 2000)
  • Ten Years of Java Technology (1995 to 2005)
  • Is Java getting better with age? - an interview with James Gosling (January 2006) ... is Java's use waning? Is it aging ungracefully? Is it getting old and crusty?
  • A Closer Look at Java - interview with James Gosling - (June 2005, discussing Java's first ten years)  - "In the design of Java, we didn't care so much about how quickly you could get the demo out the door, we cared about how quickly we could get a large, scalable system out the door."
  • About where the Java language is headed:
    "We're starting to think about potential language features for Dolphin. I've been reflecting on the principles that James Gosling so brilliantly infused into the original Java language and which we've tried to preserve as it evolves. The core principle involves making programs easy to understand. The Java language is powerful but simple, easy to read, with a consistent, clear meaning. It's more important that Java programs be easy to read than to write. That may sound trivial, but it isn't. ... Looking back at C++, there were a whole set of factors at work that make reading source code difficult: First, the C++ language itself became very complex. Many new ideas were added incrementally and, unfortunately, the seams show. Second, the C++ language consciously chose to emphasize "power" and "flexibility". That sounds nice initially, but, unfortunately, it also means that there is very little you can rely on and almost any simple program statement can have weird side effects. In C++ the statement "a = b;" must be approached with caution.


  • How To Pick A Programming Language: Back To Two Tiers and Plain JSP - Read all about it in this nice overview ... "When looking at Java and other languages and their evolution over the past few years, it's easy to see how complex it's gotten. Layer upon layer of complexity has been added, and Java is the leader in this field of change. This complexity, and the time and effort needed to grasp it properly, can lead new developers away from Java and into alternatives like PHP, ASP, ColdFusion, and the other Web scripting languages. It can also lead developers down a path to unnecessary architecture bloating. Small or mid-sized projects can be developed in JSP without complicated architectures like Model-View-Controller. MVC and similar architectures have a time and place, but it's important to understand that Java development doesn't have to be complicated and can be done as easily as in PHP. Unfortunately, Java development carries the stigma of complicated development tools and complicated object-oriented code. These misconceptions and misunderstanding of Java development drives people away. The flexibility of Java and the environment in which it's developed should be bringing them to it instead."
     
  • jMaki - an Ajax framework that provides a lightweight model for creating JavaScript centric Ajax-enabled web applications using Java, PHP, and Phobos. jMaki makes it very easy for Java developers to build Ajax applications.
     
  • Client-side Java strikes back - Over the years, Java has grown significantly and overcome its initial Java Applet problems, such as limited user interface components, slow performance and limited cross-platform compatibility. ... Two big advantages of Java over other client-side technologies (including DHTML/JavaScript, Flash, and ActiveX) are its industrial strength and broad developer base. ... As the Web continues to become more widely adopted as a mission critical enterprise application platform, Java will follow suit by continuing its own progression around client-side computing -- in many situations, it is actually the only viable solution.
     
  • Is Complexity Hurting Java?
    "A successful technology will saturate an 80% sampling of programmers only if 80% of the technology can be understood by those same programmers without forcing them to work beyond their regular work hours."


  • Proprietary vs. Standard Solutions - Not Always a Clear Choice - is the standard approach always better, and proprietary approach always bad? The author finds this attitude "somewhat foolish and dangerous, for a variety of reasons. ... There is a tradeoff in choosing a proprietary solution over a standard one, and it is my belief that the pro-standards group often oversells the "standards-based" approach, particularly in areas that are technically complex and in need of continuing innovation. No one would question that standards can be sources of tremendous value, particularly by refocusing R&D efforts on areas in greater need of innovation. But premature standards can cause tremendous strife in delivering quality software ..."

  •  
  • Java Certification and I - Is the Java certification program offered by Sun really the route to a higher salary for the developer and better quality of code for businesses?
  • JavaBlackBelt - a community for FREE Java & open source skills assessment. "This is the place where Java developers have their technology knowledge and development abilities recognized. It is dedicated to technical quizzes about Java related technologies. "

[ Back to Top ]

  • J2EE in Jeopardy - Java 2 Platform, Enterprise Edition, or J2EE, is a standard with an uncertain future, according to some analysts who are preparing a presentation that suggests market forces, including commoditization, open source alternatives, and new disruptive technologies, are conspiring to change the landscape of the J2EE specification and its market. ... "Customers need to be wary of whom they ask to provide their J2EE stack and they should also consider some of the alternative frameworks." ... Companies like JBoss, Apache Geronimo and Object Web's Jonas are commoditizing the standard and other projects like Spring, Hibernate and Apache Tomcat are providing a "simpler and good enough" model. ... and ".NET is a big threat. It is not a good enough platform. It is just as good." ... Making Java open source on some level, as IBM and BEA have called for, does make sense, however, to keep the open source and Java communities aligned. They need to form a viable, long-term alternative to .NET development."


  • Java EE meets Web 2.0 - Web 2.0 applications developed using standard Java Platform, Enterprise Edition 5 (Java EE)-based approaches face serious erformance and scalability problems. The reason is that many principles that underlie the Java EE platform's design — especially, the use of synchronous APIs — don't apply to the requirements of Web 2.0 solutions. This IBM developerWorks article explains the disparity between the Java EE and Web 2.0 approaches, explores the benefits of asynchronous designs, and evaluates some solutions for developing asynchronous Web applications with the Java platform.
     
  • Is JSF (Java Server Faces) ready to take on .NET 2.0 and Visual Studio 2005? (June 2005)
  • JSF Tutorials - JavaServer Faces and AJAX, Developing JSF Components, JSF Component Libraries, JavaServer Faces Technology in Use, Ajax4jsf. Open Source Framework, JavaServer Faces 1.2, JSF vs. Struts, JSF with Struts, Integration of JSF with Other Technologies, MyFaces
     
  • Java staving off .NET, Spring founder says - (March 2005) - J2EE technology is in a very healthy state, staving off the rival .NET platform and fostering innovation, says founder of the open source Spring Framework for Java development.
  • Java vs. Microsoft .NET debate rages (March 2005)
  • Java vs .NET (discussion at EclipseZone)
     
  • The Great Migration - The rocky road to J2EE and .NET - "While industry debate about the relative merits of J2EE versus .Net has at times taken on the tenor of a holy war, the argument over which technology will triumph is largely moot. The .Net developer strategy is remarkably similar to Sun's Java strategy in many ways. Each has merits, and their common goal is a laudable one. There's no real reason why either platform should emerge as the sole victor; in fact, many organizations will ultimately use both."
  • Bridging the .NET/Java Gap - offers advice for companies with legacy code or merger and acquisition incompatibilities.
  • Managing J2EE and .NET Interoperating Applications - Managing application resources is too important to be an afterthought. This Dr. Dobb's article examines strategies for managing applications requiring interoperability between J2EE and .NET resources.

  • Intrinsyc Software
    • J-Integra - Java, CORBA and .NET interoperability
  • Integrating .NET & J2EE with Web Services - Concepts, challenges, and solutions

  • Webcast - Heterogeneous and MS .NET development with IBM Rational Software Development Platform


The Top Java Development Environments?

  • Top 7 Java IDEs >> Eclipse - Netbeans - JBuilder - IntelliJ IDEA - SlickEdit - jEdit - Emacs JDEE
     
  • Migrating Enterprise Applications Between J2EE Application Servers - "The migration [was] a big deal. After working on a few of these projects, I can verify that the amount of moving parts in a machine composed of various portfolios, frameworks, third-party vendors, and a variety of stakeholders made the planning for such an initiative a formidable undertaking."



  • A Special Guide to Java Application Servers - The Major Players (August 2004) - "Whether you choose one of the big names or go open source, spend a multi-figure wad or fly for free, you’ve got a rich smorgasbord of application servers to choose from. Check out the variety listed in the accompanying chart to get an overview of what’s available, and match features with your project’s needs."
    This review compares the following platforms:
    • Servlet Runners - Apache Tomcat, Caucho Resin, Desiderata Software's Blazix, Together Enhydra Application Server
    • J2EE Servers - ATG 6 and Dynamo, BEA WebLogic 8.1, Borland Enterprise Server/Appserver, IBM WebSphere Application Server 5.1, Ironflare Orion 2.0, JBoss 3.2, Macromedia JRun 4, Novell Extend Application Server 5, Oracle Internet Application Server Java Edition 10g, Persistence PowerTier for J2EE, Pramati Server 3.5, SAP AG Web Application Server, Sun Java System Application Server, Sybase EAServer 5
    • Other Servers - Apple WebObjects 5.2, Macromedia ColdFusion MX 6.1, Microsoft Windows Server 2003 (.NET), Zope 2.7

[ Back to Top ]

  • Java jams - five IDEs tested (January 2005) - a review of Borland JBuilder 2005, IBM WebSphere Studio Application Developer 5.1.2 (WSAD), NetBeans 4.0, Eclipse 3.0.1, and Sun’s Studio Creator 4.26


  • Exposing J2EE Urban Myths - "It has become fairly common these days when looking through blogs and various opinion pieces to hear a common cry: J2EE is a terrible, unwieldy, and cumbersome specification. ... many of these complaints are misguided, spread through rumor mongering and anecdotal stories with little to no effort made to validate them or place them in context."
  • Where's Java Going with J2SE 6.0? - it's time to speculate on just what might be coming in Java 6.0 ... You need to think beyond the norm and not just about new specification releases that require updated versions in the platform.
  • Enterprise JavaBeans (EJB) Technology - Articles such as: An Introduction to Enterprise JavaBeans Technology - Enterprise JavaBeans 2.0 Container-Managed Persistence - Ease of Development in Enterprise JavaBeans Technology (EJB 3.0) - Seven Rules for Optimizing Entity Beans - Brewing Entity Enterprise JavaBeans (the design and development of container-managed entity beans) - Working with Entity and Session Beans
  • Jetson - "tools that allow developers to build N-Tier EJB-based applications. N-Tier applications separate functionality into distinct layers or tiers that are individually responsible for a single aspect of the application, such as storing and retrieving data in the database, or encapsulating the business logic within individual components. Jetson defines this architecture as four distinct tiers: the Presentation Tier, Business Tier, Services Tier and Data Tier."


  • Designing Web Services with the J2EE 1.4 Platform : JAX-RPC, SOAP, and XML Technologies - this online book provides the guidelines, patterns, and real-world examples architects and developers need in order to shorten the learning curve and start building robust, scalable, and portable solutions.


  • New Internal IBM Report Says "Another Flawed Study" - IBM Response to Study "Comparing Microsoft .NET and IBM WebSphere/J2EE?" ... The latest Middleware Company study is flawed and does not accurately reflect the capability of WebSphere J2EE vs. Microsoft .NET. Like two previous discredited Middleware Company studies, this study was funded by Microsoft. While expert Microsoft programmers were allowed to contribute to the .NET side, neither IBM nor other WebSphere J2EE product experts were invited to contribute to the testing.


  •  
  • Clash of the .NET, J2EE Clans? - A report in September 2004 found .NET has gained majority status in the enterprise world, if only by a slight margin. ... .NET is the preferred platform in five of seven industries (public sector; business services; media, entertainment and leisure; retail and wholesale trade; and manufacturing), while J2EE is favored by the utilities/telecom and finance/insurance industries. ... Firms with higher IT budgets are more likely to go with J2EE, while smaller firms and companies facing rough economic times are likely to choose .NET ... A number of factors help .NET's popularity, notably the dominance of the Windows operating system and the novice-friendly programming languages like Visual Basic and C# that are used on the platform. ... BUT ... Java proponents don't see .NET maintaining its popularity edge much longer, especially with the advent of J2EE 5.0 (previously named J2EE 1.5). With J2EE 5.0, an extension of the September 2004 release of J2SE 5.0, the Java community is making it easier for less-experienced developers to create applications.
     

  • NET2Java - available through a NetBeans plug-in, NET2Java helps you take an application written in Visual Basic or C# for the .NET platform, and translate it into a program written in Java source code.
     

  • Managing J2EE and .NET Interoperating Applications - Managing application resources is too important to be an afterthought. This Dr. Dobbs article examines strategies for managing applications requiring interoperability between J2EE and .NET resources.
     

  • Java Breakthrough: Code That Helps Blind People To Read Maps - "Take Java computer code that can translate images into sound, via a rudimentary software program capable of converting pixels of various colors into piano notes of various tones, and what you have is a technology that enables blind people to read maps."



  • Mars Rescue Mission Challenge (a Java programming competition)

  • Matt Quail's Madbean

    [ Back to Top ]

[ Back to Top ]

[ Back to Top ]

[ Back to Top ]

[ Back to Top ]

IT Toolbox Java

[ Back to Top ]
  • ObjectWeb - "an international consortium fostering the development of open-source middleware for cutting-edge applications: EAI, e-business, clustering, grid computing, managed services and more."
  • LaLiLuna
    • Java tutorials (for JSF, JSP and Servlets, Struts, Hibernate, J2EE, EJB, CMP relations, JBoss, and more)
       
  • Hibernate - a FREE object/relational mapping (ORM) solution for Java environments
  • Getahead
    • DWR - Direct Web Remoting - Easy AJAX for Java ... DWR allows JavaScript in a browser to interact with Java on a server and helps you manipulate web pages with the results. DWR makes it easy for you to AJAX-enable your website. DWR is freely available as open source software (under the Apache Software Foundation's ASL version 2.0 license model). It is straightforward to implement with extensive libraries, examples and tutorials. Incorporating it into existing sites is simple as it readily integrates with the most commonly used Java frameworks.
    • DocTree - a comprehensive dynamic tree based index to the JavaDoc from many common projects.
    • Venkman - JavaScript debugger for Firefox.

     
  • DataDirect - multi-platform ODBC and JDBC database driver specialists
  • Rebel frameworks and the J2EE revolution - created outside of the standards set by the Java Community Process (JCP) and meant to be supplements and even outright alternatives to J2EE application programming interfaces (APIs).

  •  
  • RIFE - a full-stack open-source component framework to quickly and consistently develop and maintain Java web applications. "RIFE's differentiators: "You get 90% of the features with 10% of the usual effort, logic-less HTML templates that can be previewed in any browser and edited with standard tools, uniform component model, designed from the ground up for reusability, integrated native Java web continuations and flow continuations" (and more).
     
  • Terracotta -- simplifies the scale-out of Java applications by adding needed services to the Java runtime, improving the availability and scalability of production-level Java deployments,  and with no additional code (no Java code changes).
    • Terracotta DSO (Distributed Shared Objects) - a transparent clustering solution that allows several Java Virtual Machines (JVMs) to appear and act as a single 'virtual’ JVM. A Java application written for a single JVM can be  clustered across multiple JVMs eliminating a single point of failure (SPOF).
    • Terracotta JDBC - a read-through/write-through distributed caching solution that allows JVMs to share database caches. It eliminates redundant queries and significantly reduces the need to touch the database directly, in some cases using the database only for write-traffic.
    • Terracotta for Sessions - a simple, drop-in, API-free solution that improves HTTP session clustering performance, to deliver high availability for Web sessions at less cost and with better performance than traditionally clustered application servers.
    • The Terracotta architecture - Terracotta is designed around a centralized, drop-in server which provides a range of replication services to applications across the data center.
       
  • HiveMind - a framework for reducing dependencies in your Java code. ... A services and configuration microkernel. ... HiveMind services are POJOs (Plain Old Java Objects) that can be easily accessed and combined. Each service defines a Java interface it implements. ... HiveMind allows you to provide complex configuration data to your services in a format you define. It will integrate the contributions of such data from multiple modules and convert it all into data objects for you, allowing for powerful, data-driven solutions which combine seemlessly with the service architecture. ... HiveMind is a framework for creating applications, not an application, or even an application server, itself. In HiveMind, a service is an implementation of a Java interface. Unlike other SOAs (Service Oriented Architectures, such as a SOAP, or EJBs), HiveMind is explicitly about combining Java code within a single JVM. HiveMind uses a descriptor to describe different services, their lifecycles, and how they are combined. It takes care of thread-safe, just-in-time creation of singleton service objects so your code doesn't have to. HiveMind sits between your application code and the underlying J2EE or other APIs.
     
  • Developing J2EE Global Applications - “Write Once, Run Anywhere”, and in any spoken language!
     
  • Identifying CLASSPATH conflicts - Classpath conflicts are not uncommon when dealing with open source Java software. This article offers a simple means for identifying when classpath problems occur (downloadable tool).
  • Launch4j - an open source cross-platform Java application wrapper for creating Windows native executables. (The executable can be configured to search for a certain JRE version or use a bundled one, and it's possible to set runtime options, like the initial/max heap size. The wrapper also provides better user experience through an application icon, a native pre-JRE splash screen, a custom process name, and a Java download page in case the appropriate JRE cannot be found.)

  • JavaServer pages / JSPs ...
  • CVS home (Concurrent Versions System) - "The dominant open-source network-transparent version control system. CVS is useful for everyone from individual developers to large, distributed teams."
  • CVSdude. - provides Internet access to CVS source control servers (FREE for projects that consume less than 2 megabytes of CVS space, supporting a single user profile).
  • Subversion - another source control project ("meant to be a better CVS")


  • Laziness Sometimes Pays - The Gains Made by Better Algorithms Almost Always Outstrip the Gains From Better Hardware - Any business-savvy engineer knows that algorithm improvements come at a price: the engineer's time. But what about asking programmers to be a little more lazy? (The article includes the source for the LazyFileOutputStream. ... if your program generates the same output twice, the output file is unmodified the second time, leaving the original modification date).

  • The Groovy Programming Language - Groovy is an agile, dynamic programming language for the Java Virtual Machine. Groovy includes features found in Python, Ruby, and Smalltalk, but uses syntax similar to the Java programming language.


  • OneEighty Software Ltd. >> ORIGIN >> ORIGIN-J - Targeted at embedded systems, ORIGIN-J "enables more powerful applications to be delivered on a wide variety of platforms including smartcards, embedded control systems, mobile phones and PDAs."


  • Java PDF and Graphics Libraries ...
    • iText - a free Java PDF library
    • JFree (www.jfree.org)
    • JGraph - "the most powerful, lightweight, feature-rich, and thoroughly documented open-source graph component available for Java." It is accompanied by JGraphpad - "the first free diagram editor for Java that offers XML, Drag and Drop and much more!"
       
  • Mainsoft (application porting specialists)
    • Visual MainWin for UNIX and Linux platforms - enables software developers to develop C++ applications on Windows using Visual Studio and deploy them on UNIX and Linux operating systems
    • Visual MainWin for J2EE - brings the Visual Basic .NET and C# programming languages to the Java platform, enabling  organizations to deploy .NET and J2EE applications on a single J2EE infrastructure, eliminating the need to maintain two separate application servers or implement complex interoperability solutions between the .NET and J2EE platforms.
       
  • JNBridge - interoperability between Java and .NET ... Access Java objects and classes from .NET and access .NET objects and classes from Java