views:

74

answers:

2

hi guys , when every one of us program in java he would need a library (some jars) to complete his work . so when this programmer find some libraries he need . how he can find the best of these libs ?

thanks.

+1  A: 

I rarely need additional "Generic" libraries. If that's what you are after you might keep an eye on the Apache stuff--there are a few groups like that that just do generally good work, but most of the stuff you could get in a general library like that you can write yourself just as quickly as you can learn to use their stuff.

Occasionally I need a specific library like an SNMP library or something to provide a specific service--these are actually NEEDed because rewriting them would be prohibitive. These are much more important to choose correctly, but generally there aren't so many to choose from and a co worker will almost certainly have some experience or opinions if you don't.

Researching stuff like this should be a scheduled part of every project--the need to do the research should be identified in the early phases of the project.

Bill K
+2  A: 

I don't program in Java much but I do need to hunt down libraries for C++ and Python, which are my mainstays.

I think some criteria you can apply to stuff you find on Google or community sites like SO and java.net include the following:

  1. How well documented is the project? Is it just API documentation? Does it have samples? Are they documented or just spat out? Are there tutorials?
  2. When was the last stable/unstable/testing release? Do version control logs indicate activity in the project? (Google Code projects have a indicator on the right side of the page which shows project activity) Are their mailing lists active? Do a lot of people ask questions and questions get answered? Are developers talking on their mailing lists?
  3. Is the API to your liking? This is both a matter of personal preference and objective measuring. As an example, for C++ GUIs, some people like the API of wxWidgets more, whereas some people like the API of Qt more, and there are people who are more productive in each, but there are also good reasons to believe objectively why one is better than the other API-wise.
  4. Is the project "famous"? This is kind of iffy because it relies on groupthink, but there is some merit to considering projects based on how "famous" or "well-known" or "widely-used" they are. It helps because this is normally an indicator of reliability (emphasis on normally, i.e. not always). The communities will probably be more active and knowledgeable. You can tap onto existing programmers who are already probably familiar with these APIs and hire them or recruit them, etc. For example, I suppose that other than being generally quite good, a lot of people go for Lucene as their text search system because it is very widely used.
  5. How mature is the project? Is it in alpha? Beta? Pre-release? Sometimes you find a library you really like but it's very raw. Depending on the nature of your project, you may want to reconsider using it.

All that said, generally good places to find good Java libraries are probably projects from Apache and those published by Google.

This is all I have for now. Take them with a pinch of salt. If I have anything else to add I will edit this post.

Hope this helps!

blwy10