jump to navigation

Now The Time To Use JNDI…. February 28, 2007

Posted by essamabdelaziz in JAVA.
add a comment

for a business need it’s supposed to  deal with active directory  soon, which mean I should find  a suitable tool   in java give me the  facility to  deal with Active Directory smoothly , i didn’t search a lot because I know JNDI ,I didn’t use it before but now it is the time to use it ,I will give you a small introduction about  JNDI and I will try to Give More details in next posts after implementation of course  , but I hope if any one have an experience with JNDI give me his feed back …..

 What’s JNDI…?

JNDI is an API specified in Java technology that provides naming and directory functionality to applications written in the Java programming language. It is designed especially for the Java platform using Java’s object model. Using JNDI, applications based on Java technology can store and retrieve named Java objects of any type. In addition, JNDI provides methods for performing standard directory operations, such as associating attributes with objects and searching for objects using their attributes.

JNDI is also defined independent of any specific naming or directory service implementation. It enables applications to access different, possibly multiple, naming and directory services using a common API. Different naming and directory service providers can be plugged in seamlessly behind this common API. This enables Java technology-based applications to take advantage of information in a variety of existing naming and directory services, such as LDAP, NDS, DNS, and NIS(YP), as well as enabling the applications to coexist with legacy software and systems.

Using JNDI as a tool, you can build new powerful and portable applications that not only take advantage of Java’s object model but are also well-integrated with the environment in which they are deployed.

What Is A Professional Programmer? February 25, 2007

Posted by essamabdelaziz in General.
add a comment

by Sarah George

How do people become professional programmers? Many people go the “traditional” path through a computer science or software engineering education and from there into professional programming work.

Others become professional programmers by accident. A person writes a small program to help at work, and their workmates say, “Oh great, you can write programs! You’re our programmer now!”

Other people start out as hobbyists and follow a less traditional path, not always getting a degree, but clearly wanting to be programmers from the start and working actively towards that goal.

I’ve been a hobbyist programmer since I was 6. I wasn’t writing anything amazing back then but I had started writing and soon found it was absorbing most of my time. Since I never really stopped, that gives me 24 years “programming experience” and counting.

At first I was into writing computer games. Later people asked me to write programs for them, and sometimes I even got paid. From this I learned that software is always for something. Programs are not self contained worlds of their own. People expect things out of a program that have more to do with Japanese or Geophysics or Engineering (or whatever they’ve got in mind) than with how a computer works. I had to learn something about all those domains in order to write programs for them.

At university it didn’t take long before I was a tutor, and that’s where I found I enjoy teaching, and especially enjoy teaching programming.

While I was at university I got my first “real” job, writing Visual C++ code for a financial database company. In terms of design and theory it was lightweight stuff. But in terms of working with others on a large project I was being thrown in the deep end! They had gigabytes of source code, growing cancerously through the efforts of a dozen developers of wildly differing skill levels.

In spite of my programming skills being well above average there, I learned to settle for being a junior programmer, a little fish in a large pond.

Skipping along a few more jobs and a lot more years, today I am a senior developer in a small research group—a big fish in a little pond. I’ve had to teach my co-workers a lot about professional programming, because most of them haven’t been in industry to get that taste of what large code bases and diverse skill levels do to programs if you aren’t using those “professional” skills to keep everyone pointed in the same direction.

There’s quite a gap between “being able to program” and being a “professional programmer.” It took me 15 years to go from beginner to hotshot programmer, then another 10 years to go from hotshot to professional—and I’m still learning.

Whatever the path we follow, most professional programmers have in common the fact that they learned to code first and how to be a professional later.
The Meaning of “Professional”

So what does it mean to be a professional programmer? What does it mean to be a professional anything? Some definitions simply say to be a professional is “to make money from a skill,” but true professionals also have a set of qualities often described as “professionalism.” In my opinion, these qualities are: trustworthiness, teamwork, leadership, communication, constant updating of skills, an interest in minimizing risks and accountability. Each of these effect the professional programmer in certain ways.

Trustworthiness The concept of trustworthiness applies in several different ways for programmers. Can you be trusted with a job? To perform a task without someone checking up on you? Can you be trusted to ask for help when you need it?

If you’re given clients’ data or have signed a non-disclosure agreement, then you are being trusted to respect privacy. You are trusted to check license agreements on third party tools or libraries and to get licenses or permission as required. And like any professional you are trusted to simply do a good job.

Teamwork Will you genuinely cooperate with your team mates? Will you work to mutual advantage and not just your own? Can you trust your team to work with you? Can you do your share of the work and trust your team to do the rest? And can you accept your management (and sometimes even clients) as part of the team, everyone trying to get the same job done?

Leadership Showing leadership means both earning respect from others and knowing what to do with it. Recognize the skills of your team members, and make sure you can offer each person challenges and development without exceeding what they can cope with at a given time.

Leadership involves not always getting to do the “fun” parts of a project yourself (that scary “delegation” word). It also involves not asking anyone to do a task that you wouldn’t be willing to do yourself. It’s not just the managers and lead programmers who need to show leadership, it’s any professional programmer. The best programmers to work with are the ones that know what’s going on, not just their little tasks.

Communication Respecting the people you work with, and your clients, enough to really listen to them is a critical part of communication. Teamwork can’t happen without good communication, nor can accountability.

Communication is critical for helping clients to produce usable specifications and feedback. Will you question whether the specs you are given really will serve the purpose that the client has in mind?

Communication skills help with making meetings timely and effective. A professional’s communication is effective and to the point, whether in person, in email, on the phone or in written documents.

Documentation at first seems like a programmer-specific concern until you consider how many people require documentation in a serious project: other programmers need high level, API level and in-code documentation; managers need planning, progress, and bug documentation; lawyers need proof of what was done and when; and users need documentation on how to use the software.

Updating Skills Keeping your skills up to date involves staying aware of what’s going on in your industry. What are the current ideas about methodologies like eXtreme Programming? What libraries and tools are out there that might support your project? What are the current refactoring tools? How about standards, file formats and protocols? Are you up to date with Unicode, XML, SQL, and all the other acronyms? Perhaps you’re missing out on something if you’re not. What platforms are your potential clients using? Should you be learning about cross platform development?

Basically you need to possess a genuine interest in your field, and to read broadly so you know what’s out there and which areas to then read deeply about. You also need to accept that even (or should I say “especially”) the very best programmers are still learning.

Minimizing Risks Familiarity with best practices, combined with a healthy dose of common sense, will take you a long way towards managing risks. Professional programmers keep track of known bugs or any other change they intend to make. Bugs are risks, and a simple database can prevent you having a product ship with bugs you’d simply forgotten.

Another risk that’s often not properly considered is any and all changes to the source code. Source is your livelihood and any change can be a mistake. There’s good software out there that will keep track of every revision of your source code and even help merge code that multiple people have changed.

Professional programmers are careful to do enough testing. A software company will generally have testers but the developers need to know how to get the most out of testers and also how to write their own unit and regression tests to make sure every change in behavior is noticed and checked by a human.

Keeping your code simple and well styled is another commonly overlooked way to manage risks. If anyone can look at the code and see right away what it does, you are far less likely to find bugs in it later, and you are less likely to have a junior programmer attempt to change something without understanding it first.

Another risk is the client changing their mind, or more often changing their specifications because they’ve realized it wasn’t what they had in mind. Write your code to be modular and reusable and you won’t have any trouble adapting it to changing needs.

Accountability Writing code for others is a responsibility. You need to make sure your software is reliable. You need to make sure you and the client truly understand the requirements and specifications. You need to have documentation of your work, all current and past bugs, your progress, any problems, signed-off milestones, and more. You are also required to know about some basic legal issues, like software licensing, the terms of your employment contract, and intellectual property law.
* * *

As you can see, there is a huge gap between “coding” and “professional programming.” Most programming courses focus on the coding side of things, and the professional skills tend to be glossed over or not covered at all. I have found myself regularly teaching these skills to new co-workers, which highlighted the need for “professionalism skills training.” Teaching my co-workers reminded me how much I enjoy teaching. I decided to teach more people by trying my hand at professional writing for a change.

I set up a web site, which is completely independent from my day job. The site is called Developing Programmers.com. It is devoted to teaching people how to develop into professional programmers. Since founding the site, I’ve been presenting the tools and ideas that I think professionals should know about.

Some of my articles simply refer to other sites of benefit to would-be professionals. I research other articles from scratch: tutorials, guides, and discussions of things professionals should be thinking about, like revision control, documentation, keeping your group pointed in the same direction—and of course, each of the aspects of professionalism that I listed earlier.

These days I consider myself to be a professional programmer, though I am still discovering the depth and breadth of what exactly that means. Perhaps that ongoing exploration of programming and of professionalism is what makes this for me a career and not just a job.

http://www.developerdotstar.com/mag/articles/software_professionalism.html

ITWorx Prayer Times February 24, 2007

Posted by essamabdelaziz in General.
add a comment

ITWorx Prayer Times Gadget (which won the Microsoft’s MDC 2007 Gadget Cup),

helps you know the 5 Islamic Prayer times for the day.

It can be customized for different cities around the world (you can even enter your city’s coordinates if it isn’t built in) , and is able to calculate prayer times using the various Islamic calculation methods. It also has the option of playing the Azan (Islamic Call of Prayer) when the time for the next prayer comes.

The gadget has 3 modes:

Docked (which displays the time for the next prayer and contains a countdown timer to show the time remaining), Undocked (which shows a small clock also displaying the next prayer and the time remaining for it) and Flyout which shows 5 clocks with an analog and digital display of the 5 prayers of the day.

To download

http://gallery.live.com/liveItemDetail.aspx?li=83712aef-5008-4bfc-b6f7-aa495828bb44&l=1

Career Paths for Programmers February 19, 2007

Posted by essamabdelaziz in General.
1 comment so far

By John Bennett, Jr.

Published August 21, 2006

I recently interviewed for a Business Analyst position with the CIO of a large multi-national software development firm. This man was in charge of the company’s worldwide IT operations, including offshore development projects, for which he was searching for qualified Business Analysts. The interview quickly became a casual conversation about current trends within the IT service sector, how the company was planning to take advantage of those trends, and, most importantly, how I could fit into those plans. It was during his evaluation of my skills that I asked how I fit and whether it was technical or business skills that were most valuable to his projects. The CIO summed up his advice about my career path with one small sentence: “Stay on the business side.”

Business skills, in this CIO’s view, were most important to his future projects and the industry as a whole. His reasoning was that he could train anyone in the technical skills he needed for a project, but finding those people with the necessary business skills to guide an IT project to success was something that could not easily be obtained. He went on to say that he found it difficult to find people who could communicate on even the most basic of levels. I asked if my background as a developer would help in getting a business analyst job, and he conceded that although it’s not a requirement, it certainly would help matters as long as I could prove that I wasn’t “too technical.”

His comments are consistent with the trend that all US-based programmers have observed since the late 1990’s: global salary competition amongst programmers, and a growing view in big business of programming as a commodity skill. It’s hard to compete with a developer in Russia or India who can work for a fraction of what I make minus benefits. The CIO managed to reaffirm the subtle, but major, shift from technical skills to business-technical skills in today’s labor market. I gave weight to his viewpoint since the people in his position are the trendsetters of the technology industry. They are the ones who set the directives for a company’s IT needs, and often, the requirements desired for the higher-paying positions.

I did a little research and found that the US Bureau of Labor Statistics Occupational Outlook Handbook predicts that computer systems analysts are expected to be among the fastest growing occupations through 2012. The Handbook describes a systems analyst as someone who may plan and develop new computer systems or devise ways to apply existing systems’ resources to additional operations. It describes a computer programmer as someone who writes programs according to the specifications determined by systems analysts. (The book does not separately list business analyst as an occupation.)

According to the Handbook, in the US systems analysts held an astounding 487,000 positions in 2004 (up from 468,000 positions in 2002) compared with 455,000 jobs in 2004 for computer programmers (down from 499,000 in 2002). The Handbook also states that employment for computer programmers is “expected to grow much more slowly than that for other computer specialists.” And recent estimates by the Economic Policy Institute have put the number of jobs being offshored at approximately 330,000 to 500,000 jobs. About 100,000 of those were full-time computer programming jobs.

The key to maintaining a good employment outlook in IT, it seems, is to move out of programming and up into more business-oriented IT positions such as systems analyst, business analyst, project manager, or systems architect. However, a computer programmer can’t just decide to become a systems analyst or project manager overnight. The journey takes time and requires the right amount of experience and learning to be successful.

Making the Shift

So you’ve seen the statistics and watched as the jobs in your market slowly disappear. You want to move more to the “business side,” but you don’t quite know how to do it. As I’ll describe next, making the shift can be done on-the-job by gaining more responsibility, polishing up your problem-solving skills, and using creativity in your work.

I began my journey into systems analysis and design by accepting more responsibilities throughout the project I was on when things proved too overwhelming for my superiors. I gradually accepted more of the project management and business analysis responsibilities when the opportunity presented itself. For example, I would walk to Suzy in accounting and work out a new enhancement with her one-on-one rather than wait for my manager to do so. Over time, as my manager’s confidence in my abilities grew, these responsibilities became a part of my job. It wasn’t long before I became the Programmer Analyst, and ultimately the Project Manager, as new positions were created to fulfill demand for our work.

When the need arises, I recommend walking to the end user yourself and working with her one-on-one. Your manager will be relieved when he discovers that you are capable of communicating with his end-users, identifying their issues, and resolving those issues before they are brought up in the weekly manager’s meeting. Even the best IT managers need a subordinate who is visible to the users who they can trust to get the job done. If a manager is slowly factoring himself away from the day-to-day workings of the project, welcome it. The higher visibility that you are obtaining can be translated into higher value—and that can result in a promotion. Over time, your increased interactions with more business-oriented people will make you more sensitive to business concerns.

A good subordinate has to be open-minded and creative. When solving problems, one has to always believe that there is a way to accomplish something, even if it’s never been done before. Sometimes, just listening to the user will produce an idea. A lot of issues may come down to the business process that the system is attempting to replicate. I have had users actually solve a business problem for me just by listening to what they had to say!

Whether you’re open-minded and creative or not, you can still work towards more business-oriented positions. After all, business systems analysts and project managers are only a small subset of the many positions opening up each year to address the issues of complexity through simplicity. If you love programming, you don’t have to necessarily give it up.

Jobs To Pursue

Senior Technical Positions

Developers will often find that they may have to work side-by-side with the users to iron out difficult bugs. It can be difficult, if not impossible, to fix these problems when both parties can’t communicate effectively. There was always a time in most of my work situations when the developer had to talk with the users or other developers directly to fix difficult issues. This is the programmer’s chance to show management that he or she is someone who can communicate and utilize analysis methodologies—otherwise known as a “programmer analyst.” A programmer analyst is also usually someone who has some years of technical experience, and a certain depth of technical knowledge.

Programmers who seek advanced technical skills without too much end-user interaction may find themselves gravitating toward the design & architecture side of the business. Although these types of positions are still relatively technical, they often involve making key decisions to address how the new system will fit into the organization’s overall IT plans. In order to be successful, the architect needs to understand and control the elements associated with the utility, cost, and risk factors of the proposed solution.

System architects must make very educated decisions about how to decompose and isolate the different components that will be required, how to fit these components into the existing infrastructure, and in what order to implement each component. It can be a disaster to implement an online ordering system that isn’t compatible with the organization’s current accounting packages. The architect must identify these types of issues and present them to non-technical management in words they can understand.

Business and Systems Analysts

My job searches have suggested that business and systems analysts with a good programming background and a high-level of “business savvy” are becoming the next hot ticket. More and more organizations are finally hiring business analysts to explore, record, and recommend systems that fit the business—as opposed to the other way around.

The business analyst must often work with project managers, systems architects, and systems analysts, all of which are growing occupations that can make the difference between success and failure. In some cases the business analyst’s responsibilities are being combined with that of the systems analyst or the project manager under the guise of “business analyst” or “business systems analyst.” A quick search on Dice.com will reveal that many business analyst jobs have hidden deep within their job descriptions requirements to develop technical specifications or to guide and manage projects. My first business analyst job required both project management and systems analyst skills. These positions are sure to become more common as organizations struggle to reduce project failure and development time.

Project Management

According to the Bureau of Labor Statistics’ Occupational Handbook, employers prefer project managers who possess advanced technical skills that have been acquired through work experience. The project manager is often responsible for hiring the staff, setting the schedule, and keeping track of the progress through every phase of development. This person is also responsible for assigning the work, dealing with everyday problems affecting that work, and making sure each analyst or programmer is carrying his own weight. The project manager can best carry out this function if he truly understands the work he is managing.

The project manager must also be a “people person” as well as a “technical person” in order to succeed. This individual must work with technical and non-technical staff at every level of the organization in order to succeed in his goals. Additionally, the project manager has to manage his team effectively to produce the desired product on time.

Management

The ultimate assignment for many IT professionals looking to move up the IT food chain is to become the manager. The Occupational Handbook explains that “employment of computer and information systems managers is expected to grow faster than the average for all occupations through the year 2014.” These job opportunities are best suited for applicants with computer-related work experience and often require an advanced degree, such as an MBA. And of course, strong communication skills are a requirement for any management job in IT.

Skills To Develop

Okay, so you’ve heard all about what’s required and where IT is going, but how can you capitalize on this new information?

My interview with the CIO and my experience in the field have shown me that companies want IT professionals who can understand what their business is and how to apply technology to make it better. Being able to follow directions is important, but being able to take some initiative and make your own judgments without handholding is equally important. The solution is to differentiate yourself from the traditional developer.

We have already discussed two ways of building up your current skills—acquiring business knowledge and advanced technical knowledge—but two other areas are important as well: communication and leadership.

Whether that CIO I interviewed with believed that communication skills could be learned or not is irrelevant. Everyone can learn to be a better communicator with practice. The difference is that communication skills take much longer to develop. Communication takes the right mix of experience and training to become effective. I have worked on this since my college days and have had great success in my career as a result.

I learned to communicate more effectively by dealing with those who couldn’t. Many software users can’t understand the technical side enough to describe any of their requirements in any type of detail regardless of their background. On the other hand, many technical people don’t understand the intricacies of the business processes they are implementing because they can’t openly communicate with the users. Learning to communicate, and having the patience to gain knowledge from the user, is an essential skill that many of my former and current coworkers don’t have.

To add to your problem solving skills, instead of asking your superior or a more experienced programmer to help with a problem, take it upon yourself to find the answer to that complex problem. Before too long, you can be the one who others consult when there is a problem to fix or a new project to complete. Gaining problem-solving experience not only improves communication, it also improves your chances of moving into analyst and management positions. Eventually, you can do as I did and get your own project to manage.

The key to moving up the ladder at any company is to let them know what you know. Answer those questions, solve those problems, accept those new projects, and don’t be too shy to share a better solution. It could mean the difference between being “just another programmer” or being the top candidate for a promotion.

http://www.developerdotstar.com/mag/articles/programmer_career.html

Version Control And Eclipse(part A) February 17, 2007

Posted by essamabdelaziz in Eclipse.
2 comments

In one of my pervious posts I talked about my mistake that I wasn’t use any version control sysetm to control my work
VSS was  so boring  for me as ajava guy it’n not compatible with eclipse as far as I know ,so I dig through the internet to find a suitable tool for me
And I found my one   CVS
this article consists of 2 parts, first part is talking bout CVS
Part 2  is talking bout How to use CVS  wirth eclipse

*for those who do know what is version control i found a nice story Published by FCI_H  guys talking  about Source control .

What’s CVS…?

CVS  is the most popular version control system in the free software community, used by Netscape,, many Linux projects, and others.

Initially, CVS was designed to provide version control for a group of developers working on a single machine. There was a CVS repository somewhere on the file system, and every developer working on a project had to have a read-write access to the repository files, including auxiliary files used by cvs program itself.

So let me show how to Create CVS Repository

1- First ,download cvsnt and make your installation  you can dig through the internet and find it ,if you fails ask me to Pass  it .

2- open the CVSNT Control Panel applet. The applet is located in the Control Panel and is generally called CVS for NT
3- make sure that the CVS Service is not running. If it is, click on the Stop button to stop the service. 
4- go to t repository configuration and Choose your repository location for example

C:/ Backup 
 
5-go to Server Setting  and In this screen, first change the Temporary Directory to C:/Backup  (the location we created before)

 6-Finally, go back to the “Service Status” tab and start the CVS Service service.
 
 
now we just created CVS reprository in the next part of the article i will show how to
use eclipse with CVS

So why I decided to blog February 13, 2007

Posted by essamabdelaziz in General.
add a comment

So why I decided to blog I think it is very difficult question for me because I didn’t expect to be asked a simple question like this …!

But when I asked about my blog I decided to tell you my story and my idea

Actually blogging is very good idea for sharing info,expressing your self and discuss your ideas with people.

in my case i decided to blog and archive any Technical info that i know for two reasons .the first one and the most important one is transferring my knowledge.

to express my idea let me told you a story,

 some muslims young engineer choose some young developers to train them on latest technology  the training Title was “Oracle Administrataion” .

i was one of those who had the chance ,we had the training in a big and reputable center the tarining was very reputable as we take the training in oracle egypt sure not the same but they tried to make their best.

when we reach the training center they give every one a free Papers and pen there was a free open buffee , the instructor was a very hight qauilified one I think he was oracle Egypt Guy .

 Although all what I mentioned Do you know how much the training cost me..?

So here is the surprise ……..!

The training was free cost But they only have one condition that I if I accept to attend the training ,I should make the best use of it ,I have to transfer my knowledge in some day to another one who may need this knowledge I think It was avery positive idea from them .

Later I saw them in Life Maker(amr khalid program) ,I was very happy when I saw them talking about their idea .

So this was my first reason Just I want to repay my dept and let other share me my knowledge .

 To get this info it took an effort from me if I transferred this knowledge to another one when he need this info he don’t need to make the same effort as I did before I will give him the info as apiece of cake. but he may do some effort to know a new information that I didn’t know before I think this will save amuch time for me and for the other  person ..right!

It’s not all one day may a third person come to take other person information ,etc… And this will make us or will make the best use of our efforts  and make us feel as a one community or one Team And will reflect on our performance as a egyptions developers . So it wasn’t my Idea I just want the idea to be extened I wanna help other with my knowledge or experience ..

And our prophet Mohmed ( ص)said

 اذا مات ابن ادم انقطع عمله الا من ثلاث صدقة جارية او علم ينتفع به او ولد

 صالح يدعو له

 صدق رسول الله صلى اللع عليه وسلم

As others help me I will do my best to help those who need  help.

 The second reason in my daily life I’m facing some problem s And I make an effort to  asitauble soluation After along time I may face the same problrm again Bu I may forget the solution so I will have to to do the same effort again which I made before which mean overhead .

But if I archived every problem and every solution in my blog when I face the problem again It will be so easy to find the solution again in zero effort and zero time..right Finanly I tried to express my idea as much as I can I wish every body to understand what I mean So please share your information and don’t hestitaite to help others.And let me now about Your  new blogs

 by the way i was talking about training4islam group.

Ten Reasons To Use Eclipse February 12, 2007

Posted by essamabdelaziz in Eclipse.
4 comments

my First IDE Was jbuilder it  was so easy , Very rich

and Accelerating  Your  Development .you don’t need to do any thing just drag and drop

it  helps me alot especially in my graduation project it was swing application acts as web Designer

but i decided to move to eclipse coz it’s free and the  market prefers devlopers Who

Use Free Tools Like eclips

 at the  end it’s very important to the customer how much will i pay..?right…!

today i heard Agood article talk about Eclipse and i wanna share it with you

Eclipse 2.0 is out and making a splash! You may have already heard about IBM’s newest and hottest IDE. Industry analysts have dissected it, technical writers have reviewed it, but most have failed to see an essential fact: through a combination of licensing, technologies, and sheer excellence, Eclipse is in a whole different league than most other development environments. Here are some reasons why you should consider using Eclipse now.

#1 – Eclipse is Free

Eclipse is free software: access and use of the Eclipse code are controlled by the Common Public License, an open-source license which allows individuals to create derivative works with worldwide re-distribution rights that are royalty free. The license has been approved by the Open Source Initiative, and can be summarized as: grab it, hack it, give it away – or resell it. IBM, the backer of the Eclipse project, has to be lauded for this forward-thinking initiative.

Eclipse is also free in another sense of the word: it carries a zero price tag. Certainely a compelling feature in today’s economy! How much money would you save but dropping that expensive IDE that requires a license per seat? Some are going as far as dropping graphical IDEs entirely; they went back to a pure command-line environment, and are proud of it. Emacs/vi and the Unix shell have great strengths, not the least their simplicity. But when facing the latest advances in IDE technology, as featured by Eclipse in particular, I couldn’t help but feel those legacy tools have been left in the dust.

The rest of this article will detail just how Eclipse bests even the most advanced commercial IDEs; for now let’s just remember that its price is zero. Download it, unzip it, you’re set to go. Why pay for a commercial IDE when better can be obtained for free? And remember, your boss will love you for it.

#2 – Eclipse is a Platform

Eclipse, although mostly known as a Java IDE, is primarily a platform, designed from the ground up to understand more than just the Java language. Thanks to its open architecture, Eclipse is wide open to extensions, by commercial entities as well as individuals. And while Eclipse is already a fantastic IDE for Java programming, other languages and tools are being integrated in the platform as we speak. And this mirrors the reality of my development: like most developers today, I don’t use one language, I use many languages. I believe in using the best tool for the job; most applications today require a mix of technologies and languages.

Consider J2EE applications: they are written in Java of course, but also JSP, XML, HTML, and other languages. A pure Java editor cannot handle all those different syntaxes which bear little or no relationship to Java. Eclipse, because of its open architecture, accepts plug-in modules which can handle almost anything.

#3 – Eclipse Has Momentum

Although Eclipse is an open-source platform, it isn’t the only one. A most notable competitor is Sun’s own NetBeans, commercially distributed under the name Forté. NetBeans has lots of features, is as free as Eclipse, and surely must be taken into account in a discussion of Java IDEs.

But while Sun’s efforts in opening NetBeans to other software providers have been met with mixed results, the Eclipse Consortium seems to have succeeded in creating a group of very strong backers actively supporting and extending the Eclipse Platform. First among them is of course IBM, who funds the Eclipse Project, and is building its commercial J2EE IDE product, WebSphere Studio, on top of Eclipse. But many others can already be mentioned: Rational Software is using Eclipse for its Rational XDE modeling tool; Fujitsu for its application server product line; and JProbe, Sitraka, and others are porting their respective products to Eclipse.

#4 – Eclipse is Easy To Extend

The Plug-in Development Environment, or PDE, is an integrated development environment for developing extensions to the Eclipse platform. Using the PDE is like using Eclipse to develop Eclipse, allowing developers to leverage the excellent Java tools to extend the platform itself. I discuss the JDT (Java Development Tooling) more in detail below.

Thanks to the PDE, and to the attractiveness of the platform itself, Eclipse has succeeded in generating tremendous traction in the software development community. Plug-in projects aiming at integration more development tools into the Eclipse platform, are already too numerous to be listed here. Let’s only mention a few:

  • the unescapable JUnit and Ant are part of the JDT (the base Java IDE).
  • EASIE by Genuitec is a set of tools to manage J2EE application servers from within Eclipse. They’re precious for J2EE development.
  • a ClearCase team provider to access ClearCase repositories.
  • AntlrSupport integrates the Antlr parser into Eclipse.
  • the AJDT provides support for Aspect Oriented Programming in Java.

The list is growing fast! As Eclipse gathers more market mass with plug-ins addressing all facets of the software lifecycle, it will soon become a de facto standard workbench for Java developers.

#5 – The Eclipse Workbench: Views, Editors and Perspectives

Eclipse implements a strong UI metaphor, the result of years of research and development in IDE technology: the workbench. Simply defined, the workbench is a space where work is performed using a range of tools. In Eclipse-speak tools are called views and editors, and a given layout of tools is known as a perspective. Eclipse Views

Java Perspective with Console View

There are many views and editors; each is dedicated to a specific functionality. E.g. the Java editor highlights Java syntax; the Hierarchy view shows the class inheritance hierarchy; the Console view displays System.out messages. Each view is contained in its own window; a view can either be “pinned” to the workbench, where it becomes part of the current perspective, or it can be “floating”, and iconified for later access. A perspective encompasses the tools and resources required to solve the current task. It selectively displays views and the resources they show. A perspective can be customized by moving views around, and by selecting which views are always open (pinned), or accessible through the icon toolbar.

Again Eclipse mirrors the reality of software development: as I move from analysis/design to implementation, then to testing and debugging, Eclipse allows me to use the most appropriate toolset simply by switching perspectives. Default perspectives exist and embody the most common tasks. E.g. the Debug perspective opens all debugging views, used to trace code, set variables and breakpoints; the Java Browsing perspective shows the Hierarchy view, the package, class and method views, as well as the Java editors.

This simple yet powerful “workbench” metaphor is what makes Eclipse such a superior environment, easy and enjoyable to work with. The IDE has many features, conveniently accessible when needed, yet easily hidden when not. E.g. I write my code in the Java browsing perspective, which displays the class/method views. Running the JUnit tests pops open the JUnit view, which I file away (iconify) as soon as all tests have passed. To write my Ant build file, I switch to the Resource perspective where the entire project tree is shown. At all times the IDE has provided me with the tools I need for the task at hand, and only those. I decide what set of tools I’m going to need, and how they are presented to me.

#6 – Eclipse is Faster

Maybe this one is a pet peeve of mine, but I simply cannot stand waiting for menus to pop-up. Typical developer machines are less than a year old, and have more than enough horsepower to run any desktop application. How is it possible that a Java app still feels like a Java app, to the point that any developer can always tell an application is written in Java by its slow execution speed and quirky fonts?

Maybe an answer to this problem is SWT, the Standard Widget Toolkit developed by the Eclipse team as a replacement for AWT/Swing. In addition to making the application look like any other native application, which is a gread-breaking improvement in itself, SWT seems to greatly improve the performance of GUI display. And maybe, just maybe, the Eclipse developers care more about performance than others. The Eclipse development process consistently lists explicit performance milestones that must be reached before the product ships.

The remaining sections of this article focus on the JDT, the Java IDE which implements the core programming environment and doubles as Eclipse’s best demo.

#7 – Never Compile Again

One aspect of Eclipse I dearly love is the utter lack of a “Build” or “Compile” button. Isn’t it paradoxical, an IDE that doesn’t let you build? IDEs started precisely as GUI wrappers around a compiler and a make tool, how can the “Build” feature be absent?

Here’s the key: Eclipse always builds for you. Every time you save a file, run a program or a tool, or any other action that accesses resources contained in the project, Eclipse compiles. This essentially means your code is always compiled. (Note that a “Rebuild” menu option is still present for those rare cases that require a manual build.)

I find this to have a profound impact on my programming work. For the first time I’m working in an environment where the natural state of code is compiled. Text, source code, used to be the primary form of a computer program. In Eclipse, source code has almost become a transient state, used only as input to the compiler. As soon as possible, and in fact, almost continuously, code is compiled to its binary form, with all the benefits of compilation (type checking, static analysis, etc.). Eclipse also builds incrementally, thus ensuring that most build operations are completed within seconds.

The remaining sections discuss the benefits of constantly keeping all code in a compiled state.

#8 – Interpreted Java

Eclipse is revolutionizing Java development by bridging the gap between traditional static languages (think C++) and dynamic OO environments (think Smalltalk). Java developers are used to the repetitive compile/debug/test cycle typical of static languages. Eclipse uses a combination of advanced techniques to emulate a dynamic programming environment normally associated with interpreted languages. This amazing feat gives Java developers the benefits of both worlds: a compiler still performs static analysis, and the repetitive compile/debug cycle yields to a smooth write/test activity.

Let’s look at a spectacular example. As mentioned above, Eclipse builds fully incrementally: it will even let you run code containing syntax errors. Calling a method with compilation errors in it breaks into the debugger, where I can fix the error and resume the execution as if nothing had happened. Behind the scenes Eclipse compiled the new class and dynamically replaced it in the running VM. My Java program can be changed, and in fact, almost be developed, while running! This amazing feature is known as hot code replace, and requires the latest JDK to work best. Eclipse Fill-in Templates

Ctrl-Space in Java editor popped a fill-in template

Because all code is always compiled, Eclipse has detailled knowledge of the methods and classes making up an application. In addition, the Java editor also constantly parses code as you type it. This unprecedented depth of knowledge about the code blossoms in a bouquet of sophisticated features inaccessible to a purely text-based editor. It makes the environment incredibly smart and able to provide contextual help at a level I had never experienced before.

To wit, the Java editor offers completion on class names, method names, and even argument names. It detects typos as they are made, underlines the offending statements, and offers corrections, e.g. creating a previously undefined method or class. It auto-imports classes when needed, and can flag useless import statements. Fill-in code templates are tailored to the current context, and save on typing efforts.

To summarize, the Eclipse environment leads code writers with an expert hand, and increases productivity by providing immediate feedback about the code.

#9 – Team Development

Eclipse is designed to successfully interact with any software configuration management system. The default Eclipse environment is fully integrated with CVS, the standard in open source development: GUI actions give access to most CVS operations – update, commit, diff, merge, patch, etc. The diff tool is spectacular: Java-aware, it can diff specific Java elements individually, e.g. method by method.

But plug-ins already exist for most other SCM systems, such as ClearCase, Perforce, and numerous others. While some are still undergoing heavy development, the strong pressure created by the multitude of Eclipse users all but guarantees they’ll reach production quality soon.

#10 – The Refactoring Menu

Refactoring is now known to most software engineers. Eclipse features a rich Refactoring menu, which offers choices such as Extract Method, which creates a method for the body of code highlighted, Extract Interface (creates an interface for the given class using its public method definitions), etc. Refactoring is quickly becoming an essential tool of software development, and I look forward to Eclipse leading the way in this arena.

The Eclipse community has strong ties to the research community, and it is expected Eclipse will continue closely tracking advances made in software development techniques and methodologies. For instance, a rising movement known as Aspect Oriented Programming is implemented by Eclipse plugins available today. Another Eclipse project is bringing to the masses the benefits of code modeling and generation, while still another is exploring new possbilities in software configuration management.

Conclusion

Eclipse is a fantastic integrated development environment that offers for free advanced features normally found only in expensive commercial products. Eclipse raises developer productivity by weaving together most of the tools required to do a software job.

But Eclipse is more than just an IDE: Eclipse (the JDT especially) is also a vehicle, a vector enabling change in how Java software is written. A lot of the UI metaphors and techniques implemented by Eclipse originated in the Smalltalk community, and have reached a level of maturity never seen before in a Java IDE. Twenty years of experiments in OO development culminate in the Eclipse Platform, and it shows. Lucky are Java developers this jewel has been open-sourced!

Eclipse enables and favors a smooth, fully incremental development style usually associated with interpreted languages. Agile methodologies, eXtreme Programming in particular, share the same background and forces that have shaped Eclipse. The Eclipse platform is therefore very conducive, and could even be considered the perfect tool for agile programming. But even if your team hasn’t bitten into the XP apple yet, you definitely want to try it out by yourself and see!

http://renaud.waldura.com/doc/java/eclipse-ten-reasons.shtml

always update VSS February 6, 2007

Posted by essamabdelaziz in General.
1 comment so far

Today i’m very Frustrated
because my HardDesk is crashed
 unfortunattly i did’nt take backup of my latest work
this mean no weekend this week
just hard and hard work only.

so take care and don’t repeat my mistake again
always update  VSS(Virtual source Save)

Non Profit and Open Source Collaboration February 1, 2007

Posted by essamabdelaziz in General.
add a comment

opensource-250×216.jpg

open source is a software license for products developed by groups of individuals who want to collaborate to achieve a common goal. New projects are started daily within the open source community. A developer may need the functionality of a specific piece of software for his website. But in reluctance to buy the software, and the obvious need to develop it himself (most often for a client)he will find other developers who need the same functionality.
They will then as a team begin developing the new software with an Open Source license. All the members of the team benefit from the experiences and work of the others.
The development community as a whole then benefits from this new creation. Members of the development team will often come and go as they work on their own projects and careers, but very quickly the new software will often develop further. New improvements, upgrades, and bug fixes will result from the group effort, and as long as there is a need for the software, it will continue to evolve.Fortune 500 companies such as Novel have seen the power of the open source development model and have latched on as a result. Novel for instance develops a product called SUSE Linux. Now you may have heard the term Linux from some tech head, most people still don”t know what it is. Linux is an Operating System like Windows or Mac OS. The difference is that Linux is developed Open Source and is light years ahead of microsoft when it comes to functionality, stability, and security. The website your reading now is probably hosted on a computer running Linux. Most of the internet is hosted on machines that use Linux.Back to the story, SUSE is Novel”s version of Linux. They work with the open source community and help to develop a very good version of Linux. The software receives fortune 500 level testing and development, and the open source community benefits as a whole. Novel then offers its SUSE for free as a download, or you can purchase support from novel while using its product and receive a DVD with the software. Novel sells a lot of SUSE, and the open source community benefits by working with such a reputable and stable company.So now that you understand what open source is, it may be dawning on you how it fits with the Non-Profit community.Open Source is for the benefit of the community as a whole. No one person makes all of the profit from the product, but thousands of people make a living helping people save money using open source products.Non Profits are similar in that they have a community vision or mission that does not directly correspond to a bottom line. Unlike Microsoft, who does help the community by developing the economy. Open Source and Non-Profit ventures directly impact the community by their very nature.Open Source is a viable option for Non Profit organizations.

Author: Aaron Mills is currently working for Integrity Services in Washington DC as a technology consultant. He helps to better equip non-profit organizations to use technology.