When do you use an IDE? [closed] - language-agnostic

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I know that some people swear against using a language-specific IDE ever (vim/emacs or die! type stuff) and that some people are really uncomfortable with coding/compiling in the terminal at all, so my question has the following parts.
When do you switch from one to the other
Is it even necessary to know both? If not, which should you know?
Lightweight or Heavyweight IDEs? (just code highlighting or every feature you could imagine)
What IDE do you recommend in general, and why?
Feel free to answer all, some, or none.
Short summary so far:
IDEs
Big Projects
GUIs
Easy Version Control Integration?
Text Editors
Quick/Small projects
Adapts to other languages more easily
Less overhead

IDE usage is very subjective to personal opinion. With that disclaimer, here's mine.
Know your tools and know your platforms. Developing software is your domain, so be good at it.
When do you switch? When your knowledge tells your intuition that it would be easier with the other tool.
Should you know both? I would argue that you should know everything about working with your platform. Low level knowledge makes higher level applications easier to understand.
Lightweight or heavyweight depends on the task at hand. Both are appropriate at times.
I can't recommend any one IDE, it depends on your application's platform(s) and what you, the developer, are comfortable with. If you're doing .NET, Visual Studio on Windows is probably the best, but that doesn't mean you can throw out Notepad. For Java on Linux, Eclipse is great, but don't discard vim.
Hey, Front Page is probably the right tool for the job to some people (ouch, yes, I said it. /me ducks).

As several other people have said, which IDE you use or if you use one at all is heavily dependent on the language your developing in, the scale of the project, and the platform your working on. Although I've never encamped with either the Vi or Emacs guys I do use a number of other editing tools in roughly this language breakdown:
C#, or anything else .Net: Visual Studio. There is no serious competition, the CLR languages beg for syntax highlighting, refactoring, and advanced file management. Thankfully Microsoft got this one right and the Express editions are an incredible value.
C++: I haven't touched it in a while, but I would typically view the code in Visual Studio, but compile through batch files, which had a lot to do with the eccentricities of the particular embedded platform I was working on.
Python: I recommend Stani's Python Editor if you need something with bells and whistles, but Python is so direct in its structure that I usually end up just using Scite. It does everything you really need in a Python editor.
SQL: Notepad++ or, if your doing heavy lifting, any supported editor + SQL Prompt.
Java: I hear good things about Eclipse, but Java is evil so I don't touch it.
PHP, Perl, Javascript, BASH, or most other languages: Notepad++ on Windows, Scite on Linux.
Although switching between all these IDEs can be troublesome, especially when a feature you love in one is missing from another, the benefits are to be found in using the best balanced tool for the job your doing. I switch IDEs all the time as my needs vary and I would encourage others to as well. Having worked on a limited number of projects, of limited scale, on particular platforms I hardly know all the use cases and I'm sure there are plenty of other situations and code editors out there that pair up in unique and wonderfully functional ways.

Personally, I almost never use an IDE. I use vim/make almost exclusively. There's lots of benefits to this:
Totally language agnostic. Once some commands and shortcuts are memorized, they work with all of my projects
Parts are easy to swap in and out. If I want to switch compilers, I change the variable in my makefile.
"configuration agnostic". No matter how the settings are, I can develop. No GUI? No problem. Different desktop environments? No problem. There are even ports of vim to Windows. I develop on my local machine and when I'm ssh-ed into a server in the same manner.
There are also some downsides:
Vim is hard to learn. I'm not even going to lie about this. It takes time to acquire some power.
Mostly limited to *NIX. Yeah, there are things like cygwin. Yeah, there are ports of Vim to Windows. It's somehow not exactly the same.
It's possible that if I learned an IDE that focused on a specific language, it'd have some features that would be pretty powerful for that language.

I usually use the IDE only for debugging (which IDE depends on the language/platform), and use my personal editor for the actual editing of code.
I feel that using one editor for everything is a much better approach than relearning key-bindings for every language/platform change I make.

In my experience, if the project involves building a GUI, an IDE is an invaluable tool.
If it's small, "gut-level", or a web service, I'd go exclusively text editor.

My rule of thumb is that if the language and IDE are tied together, then use the IDE (see anything using MS project files). Otherwise any editor will do. Personally I like visual Slickedit, or notepad++ if the company isn't going to shell out for slickedit. On the linux side I use Emacs, which you can consider a heavyweight editor, or a lightweight OS.

While I use VIM and non-IDE type tools, I have to admit that Visual Studio (especially 2005/2008) is possibly one of the best programs ever written. The intelli-sense and debugging tools are well worth there weight in gold. I find myself being able to write code very fast. It is especially helpful in cases where you are utilizing frameworks (e.g. .NET) and need that little extra guide to tell you what functions are available off an object without having to refer to the help documentation. It is hard to beat auto-code formatting, bookmarking, immersive debugging, refactoring, source control integration, and plug-in support.
For everything else, I use VIM. I have to admit I'm still learning how to use VIM well, but I already know it is powerful. It truly is a matter of choosing the right tool for the job.
EDIT: One thing I will mention is that you pick a tool or two and learn it very well. Become an expert at it. Learn the ins/outs and explore the nitty gritty secret stuff your editor/IDE can do. The more you do this, it will matter less what the tool is.

For me the break-down is by technology.
I use Notepad++ or vim for anything in the LAMP stack - I've never found anything particularly useful in the IDEs for those technologies (unless you could the MySQL Client Tools as an IDE, which I use when I am able to).
When working in the WISC (Windows, IIS, SQL Server, C#) stack, on the other hand, I use an IDE - one of the Visual Studio products depending on which project I'm working on.
A lot of this probably has to do with the sorts of projects I work on. I work in PHP in the LAMP stack, so I don't have to handle bunches of external libraries the way I probably would if I was using perl, and the projects I develop on LAMP are usually simpler than my Windows development. In .Net, on the other hand, navigating the libraries can be quite difficult without the IDE, and the debugging can (I find) be more complicated. Plus when developing web services using SOAP, I wouldn't even want to think about doing it without the tools Microsoft supplies.

I find that IDEs for C and Python don't buy you much, at least the ones that are available for Linux. So, when I write C and Python code, I will usually use GVIM + Ctags + standalone debugger + make.
However, in the case of Java, Eclipse offers a Java programmer so much that it's hard not use it and after a while become spoiled to the extent that it's just too painful to go back to writing Java code in VIM.
Strangely enough, I haven't had the same experience when using Visual Studio for C projects (even though I do find its debugger indispensable). One reason for this is that I prefer to manage the build scripts myself. Even with Eclipse, I would still use ant so that I know exactly what is happening during each build. Admittedly, you can of course look at the build configurations in both Visual Studio and Eclipse, but this just isn't as direct as seeing the exact command used. That being said, I'm still forced to use Visual Studio for builds mainly because of convention, as there other people working on these projects, but I will still edit the code in GVIM (with the help of ctags).

The ONLY time when you have to do compile/link using the commandline is when you work on a pure Linux server with no GUI installed - in this case your ONLY REAL OPTION is emacs. (Using anything else is pure masochism).
At all other times it would be sheer stupidity not to use a mature IDE.
Your Questions:
When do you switch from one to the other
(answered above)
Is it even necessary to know both? If not, which should you know?
That will depend on how keen you are on being a programmer AS WELL AS a systems administrator. The latter is called upon to support the former and to implement whatever is necessary to keep all systems running smoothly. To know both can NEVER be harmful, but if you insist on being a programmer only, then the necessity of knowing a specific IDE for the platform you choose is obvious.
Lightweight or Heavyweight IDEs? (just code highlighting or every feature you could imagine)
I assume the choice here refer to programmer only: there is no doubt that the more assistence your programming tool/environment can give you, and the more support you can get that allows you to focus on implementing your program spec. the better. So YES: HEAVYWEIGHT is the only sensible choice.
What IDE do you recommend in general, and why?
On a Windows platform this question is moot: whatever Mictrosoft recommends (and if you have the $$$). On Linux you have several choices: GTK-based (Gnome & company), QT-based (KDE & company), (if you're a sucker for punishment you can go for pure X and then you are more-or-less in for an interesting time) both Gnome and KDE have IDE's you can use. Third party IDE's, like eclipse, are available; they all enable you to develop GUI-applications that will run in whatever the user chooses as his GUI-environment. Some of these IDE's even allows a multiplicity of programming languages (that is the glory of Linux and FOSS: you have choices; you are not pinned to the "geography", not led to the slaughter, ...).
My personal choice of IDE (C++ only) is Ultimate++. It is source compatible with both Windows and Linux. The IDE is approaching a rich maturity AND it offers 'everything-plus' that other C++-IDE's are aspiring to. (I know this is a plug, but I've got good reason: give it a try.)
HTH

I've done both, but the debugger is really a great tool to have.
You can get pretty far just adding debug output and rebuilding, and that even forces you to use your noodle and the scientific method a bit more, but in the end (imo) the debugger just cannot be denied... it lets you really get in there and explore the system during runtime.

There are opportunities for both specialization and generality. In my own work, I've found that flexibility and being able to ride a steep learning curve has paid off well.

I use an IDE whenever I'm using a language that's more suited to being written by a computer than by a human being, for example Java. It's far too verbose to write by hand without loads of auto-completion. Vim's auto-complete is never quite as good as a language-specific IDE.
For less wordy languages though, you can't beat a good Vim- or Emacs-like editor for churning out plaintext quickly.

If the project exceeds two or three source files, I tend to use an IDE.

Once you've used an IDE with good (vs6 was not good, and most generic text editor's support for this is crude at best) intellisense-style prompting and auto-complete for a few weeks, you won't go back.

I use vim for everything except Objective-C stuff, which I use xCode for. The Interface builder, error checking, debugging are quite valuable.
However, I use a InputManager to let me use vim commands/key bindings in xCode, so I never really leave vim for anything ;)

I do all my coding in SciTE, my favorite editor, lightweight, with good syntax highlighting, and with shortcuts I am familiar with (or which I coded!).
Now, doing lot of Java at work, I also use Eclipse, which greatly improve with each version. I appreciate it is quite customizable, and very flexible about coding help, but I still do most of my editing in SciTE... Fortunately, the auto-detection/update of files edited elsewhere works quite well in Eclipse (although sometime with a sensible delay to analyze the reloaded class: we have big projects and not that much memory (1GB)).
I appreciate Eclipse mainly for two things (we compile with a special ant process and we don't really do refactoring): quick navigation in the project, particularly find a class and call hierarchy, and of course debugging.
I don't think these are so much distinct worlds, these are just tools, quite complementary: I won't fire Eclipse to do a quick edit of a small HTML file, I can't debug in SciTE. So I use both.

I haven't used an IDE since the last time I created a native GUI app, lo those many years ago. And, even then, I pretty much just used the IDE to create the GUI forms and my own editor for the actual code once I figured out how to plug an alternate editor into the IDE.
I'm not a "give me vim, or give me death!" fanatic, but my experience with having used IDEs and having used a bunch of xterms running vim has left me with the impression that the only thing IDEs really contribute, for me, is drag-n-drop form editing, which is something I don't need, given how long it's been since I last did anything with a non-web-based GUI.

re: when? I use Eclipse for Java and debugging. I keep jEdit open with a variety of Groovy scripts available. I also use Cygwin's bash in 3 shell windows for executing Ant tasks, searching etc. I can use Bash aliases for some truly powerful stuff with respect to running our server and client.
re: both? Yes, it is vital to know both IDE and non-IDE development. It doesn't matter which IDE but a debugger is essential.
re: which? For Java, Eclipse if you are paying (free) and Idea if someone else is ;-) Actually, I prefer Eclipse but I think that Idea has better support for Groovy so that it is attractive to me.

A decent code highlighting editor is all I use.

I use IDE for debugging, or for every big project that require to go on many different file. Lot of IDE have quick click to move from one class to an other. IDE for that is more productive. I use IDE too when I use big FrameWork that has a lot of folder and file, more easy to manage.
Update because question has been updated
When do you switch from one to the other?
I switch for small change in CSS or other small task,
Is it even necessary to know both? If not, which should you know?
Some time when building form (example in C#) it's very much profitable to use the IDE. Samething for debugging with breakpoint. I think both are required.
Lightweight or Heavyweight IDEs? (just code highlighting or every feature you could imagine)
Code hightlight is fine for small job, but when you have big stuff to do, bigger IDE with autocomplete, real-time error check and other refactoring tool is necessary to be more productive.
What IDE do you recommend in general, and why?
Visual Studio is great for .net, Eclipse for Java.

Related

What are ways to create custom LabVIEW controls?

I'm looking for a robust and efficient method of creating any kind of imaginable control to use with a LabVIEW project. I'm curious what you've tried and what the pros and cons are. I myself have never used LabVIEW, but have been approached to write controls for it based on my knowledge of other things (C#, HTML5, Flash, Silverlight, etc).
It appears to me as though this kind of thing has been or can be done in .NET, Flash, WebGL, Qt, Silverlight, and maybe some others as well. Ideally, we don't want to have to write any code twice, so platform flexibility is a great thing, which makes me lean toward a web solution. But ease of implementation is important as well, and I would think a web solution would require some extensive web services parsing and programming every time a control is going to be used. But I could be wrong. An eye on the future is also important. If something would be a great solution today, but probably worthless in 2 years, no point in bringing it up.
(Please realize that I am NOT simply asking how to change the colors of (customize) a LabVIEW control, nor am I interested in xControls as the final solution as apparently they aren't robust enough.)
Thanks in advance!
I am aware that this probably doesn't answer your question, but if you have access to LabVIEW, you could analyse the "Military" Theme Custom Control Suite, and look at examples on the UI Interest Group and LabVIEW UI Tips and Tricks. That's probably the best you could do with LabVIEW.
.NET is probably your best bet, LabVIEW supports .net controls, so you can define the UI and reuse your .net code.
I have heard rumours that the new LabVIEW version (2013 due in September) will use .NET 4 libraries as the default instead of the current 2, so you might want to keep that in mind.
I wouldn't ditch XControls that easily if I was your company (I can understand it's not your cup of tea).

A good resource for an overview of web technologies

I have been working on microsoft based web technologies (.net, sql server, iis) for about an year and would like to know the opensource alternatives for the above. I have heard of LAMP, Java based technologies, ruby on rails etc. Can you please point me to a place where I can find more information about these and how they match up against each other. Basically I am looking for an overview of the popular web technologies in today's world.
Thanks a lot.
Vijay
Hmmm, thats a bit difficult to do, as each language is unique in its design. I guess it's less a case of which is the best, but more which is the best to suit you. Your decision should rest on which language you feel most comfortable working in, for example like you i started off in asp.net 2.0, developing a few web apps... but made the switch over to php, the two are relatively the same, however i found php to be more accessible for the web based tasks i want it to do. Also i use macs primarily as i am a graphic designer in addition to being a web developer, so if i could develop in mac osx that was a big plus.
Perhaps you should start by outlining what environment you want to work in first, and what you'd want to be doing in it.
Then consider cost, we managed to slash the basic costs of running our sites by moving to php, simply because of the licensing differences.
Support is also a biggy, you'll find with open source stuff there is more around since it's generally a lot more accessible to more people, since theres little to no startup cost.
Finally the best way to find out whats best for you is to try them all! you don't have to be an expert in it to know whether its for you, just get a feel for the language and see if it feels flows better with you.
Hope this is of use to you :)
oh and finally, wikipedia has a little comparison thingy, its not really a great comparison but its better than nothing hey?
EDIT:
Hi Again.
I've done a bit of digging and i think i've found what your looking for!
This is a comparison chart someone made, in it details the pros/cons of php, python, perl, asp, and ruby.
Theres also this which is a comparison of some of the frameworks, they've missed quite a few off the php list, namely kohana which is a brilliant framework!
And finally heres a comparison of the three main server types, and their pros/cons.

How to choose the right web application framework?

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Since we are ambitiously aiming to be big, scalability is important, and so are globalization features. Since we are starting out without funding, price/performance and cost of licences/hardware is important. We definitely want to bring AJAX well present in the web interface. But apart from these, there's no further criteria I can come up with.
I'm most experienced with C#/ASP.net, PHP and Java, in that order, but don't turn down other languages (Ruby, Python, Scala, etc.).
How can we determine from the jungle of frameworks the one that suits best our goal?
What other questions should we be asking ourselves?
Reference material: articles, book recommendations, websites, etc.?
For me, the most important things to consider were:
Fantastic lead developers who I trust to keep working on the project.
Googling a question brings a lot of good answers.
Most importantly, I have to like the way the code flows.
Edit: Also they have to be anal about coding standards. If there is inconsistency, I get very annoyed.
Those 3 points brought me to Symfony. It is always using the latest cutting edge features of the latest PHP version. Symfony 2.0 is using namespaces before any other framework.
Two of your points were:
i18n - there is great support for it (helps that the company behind it is French, so i18n is a first class citizen).
Scales - Yahoo Answers and Vimeo use Symfony and contribute back code. If those guys can scale Symfony to 100 million users, you can too :)
It all depends on the type of project you will be developing.
Are you building a web application or a heavy content website or something else?
You also mix up programming languages with frameworks. The frameworks for PHP that I know are: CakePHP, CodeIgnitor, Zend and Symfony. For an out-of-the-box heavy content website I would suggest Drupal or Expression Engine.
It seems you won't be developing yourself. In that case I would determine the cost and availability of programmers and how widely the framework is supported and by who it is backed. The Zend framework is backed by the guys behind PHP, while CodeIgnitor is backed by the guys behind Expression Engine. Drupal has professional support packages,...
IMHO, for something that will have a lot of users, go for a compiled language.
If you don't try it, you will not know. So, I'd say do a small project in each of the frameworks you are seriously thinking about. I would prepare myself to do a lot of testing if it's something I'll be maintaining for some years. It's better to start off on the right foor than to get half way through a project only to realize you took the wrong path. There may be some requirements that end your search. For example, your servers' OS, a framework feature, or scalability. If you lay out your software plans and requirements, you probably will have very little left to choose from - unless your project really is quite generic or simple.

Tips to get started with webdevelopment

I am very curious about what you think is the best approach for people that want to start webdevelopment. I'm now talking about people that finished their education and so want to start from scratch.
I still have questions like:
Where do you start?
What software gets involved in webdevelopment?
What tools / setup would you recommend?
Offcourse i'm interested to hear alot more then only the answers to those three questions.
I am not writing this to get a load of people react on my post, i am trully interested in knowing how much work and money it will cost a webdeveloper when starting from scratch.
I hope to get a clear view on how to approach and to maybe hear some best practices.
Well one thing's for sure, education isn't finished! There's a whole lot to learn, and the more we learn the more we seem to need to learn.
If you're really starting from having no programming background whatsoever then I think you'd be advised to take a staged approach. For example:
1). A web page with a few different text formats and pictures and colours. Here you're just learning HTML. For that any browser and a notepad editor would do, but probably a tool such as Eclipse that gives some HTML editing capability would help.
2). More adaptive HTML - stylesheets that let you change appearance without changing all the html. So that's CSS.
3). Using the above, improve your designs. There are loads of formatting tricks good web sites use and you'll need to learn those.
Note that by now we've done a lot of study and we have not actually written any programs!
4). Dynamic web pages. Now we move to the programming side, rather than just writing some HTML files write a program that delivers the HTML and in some way changes the content. Starting with something really simple such as including "today's date is ..." on the page. For that You would need to pick a server development technology such as Ruby/Rails or PHP or Java/JSP ... You'll get a lot of different advise about "best" for this.
5). Now you can start to work on accepting input from the user and doing something with it so that useful work gets done. Things such as databases start to become important.
There's a whole load more after that, JavaScript and so on. An experienced programmer can pick up this kind of stuff quite quickly, if you've never done any programming at all then you will need to be prepared to take a while before you can get to the level you probably target. I think the key is to acknowledge that a great commercial web site reflects a lot of collective wisdom and skill picked up over many years, and probably is the result of a multi-disciplinary team working together. For one person to match that is a big ask. For one person to produce something nice and useful is more practical, but still does need a lot of different skills. It's quite reasonable to specilaise in a subset of the skills. For example, good visual designers write little or no code but are highly valuable.
you need:
a browser, eg. FireFox, Internet Explorer. A webdeveloper toolbar might also be useful.
a webserver, eg. Apache, Tomcat, IIS
a programming environment, eg. Php or ASP.NET
a development tool, eg. Notepad, Notepad++, Visual Studio .NET, Eclipse
most of the times a database, eg. SQL Server, mySQL
I'd say it depends what you want them to master: the technologies only (up to which skill level ?) or the whole software engineering behind a web project
A sample and fast technologies learning tree could be:
1) HTML
2) CSS
3) HTTP
4) Server side programming (PHP ?): programming concepts, interacting with HTML/CSS, then PHP API
5) Databases (start simply with MySQL for instance) + SQL (CRUD with Joins, Subselect, Indexes, Views and Transactions)
6) Client side programming (JavaScript first then Ajax)
7) A web framework (ZEND ? cake ?) and a good IDE (lots of...)
Full-time learning those technologies requires at least 1.5 year , based on the experience I have with my students and people must be trained mainly on concrete projects.
Then people should learn software engineering (cf link text) covering at least
- software requirements
- software design
- software construction
- software testing
I think people can have useful experience in this software engineering tree in 1 year and can (should) combine learning technologies with learning software engineering.
For training someone from scratch (technologies + software engineering) I'd say a least 2 years if working on at least three 6-month projects
This answer is Microsoft specific.
For starters you'll need an editor, a (optional) database and a few starting points.
Microsoft supplies most of these for free: you can download the Visual Studio Webdeveloper 2008 Express Edition for free, this includes most of the stuff you'll need.
If you plan on developing database driven websites, and who isn't, you might want to use the free SQL Server 2008 Express Edition
When you have the tools setup it's time to download some samples and see see how they work. Again Microsoft supplies some for free. You can check out tutorials and samples at their Asp.Net site.
When you are ready for some more advanced stuff, check out ASP.NET MVC, again at Microsoft.
With these tools and examples you should be able to get started.
I just want to add that you will most likely also need Photoshop or other tool to create the graphics for your web sites.
In spite of java/.net/php,the HTML,CSS,JavaScript are the basic web development toolkit.
Get a job as a junior developer that will put you on a project that is developing a web application. I personally think it should involve one of the two most established platforms, Java or .Net. I know some will disagree, but these are good foundations to branch into other tech platforms later.
Make sure you open an IDE (e.g. Visual Studio or Eclipse) everyday and code something. If not, find a new job immediately.
Read religiously at night. Start with "Code Complete", then move on to other books.
Learn the fundamental technologies of the World Wide Web:
HTTP
HTML
CSS
JavaScript
DNS, URL's
Good luck and happy travels!!
you need:
a google chrome . This provide you some advantage like inspect option. A webdeveloper toolbar might also be useful.
2. Html, Css, JavaScript are the basic language that you should be know
a programming environment, eg. Php or ASP.NET is needed for storing data and making login type page
a Visual Code Studio is needed for coding. This provide you emmet facilities that suggest you while you are coding

If project is open source do you bother looking at the sources? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I was pretty surprised to find out that raw sources of my little open source project are getting downloaded more often than the compiled and ready to use library (jar file in this case, platform independent). I wonder what are the reasons behind that? Lack of trust? Curiosity? Compiling with custom settings? Attaching sources for debugging?
Personally I usually don't bother downloading and looking at sources unless something is not working or I don't understand how it works.
I often download sources just to see how other people have implemented certain things. Reading (and understanding) other peoples source code is a good way of becoming a better programmer yourself.
As for the relatively high number of downloads, perhaps your library is included in other projects like a Linux distributions? Such projects usually download and build from source themselves so that they can properly package it.
The first reason would be for customizing applications.
Also its not a good practice to download some code and use it straight away without looking at how the code works. There will be something for you to learn from the code.
Also you might not need the whole functionality of the project. If the project is too big and you need to use only some functionality in it it would be a great idea to trim the project to your needs and then use it.
For every piece of software of long term interest for my company, I look at the sources to assess the quality. The rationale behind it is that badly written software is usually also bad to use and maintain and thus a business risk in the long term.
Even with most commercial software like ERP systems it is no problem to get a look at the source. Only for COTS (say MS Office) it is hard to get the source.
I also check source for every hiring decision.
An other reason why you see so many source downloads might be automated build systems like FreeBSD Ports which download and compile automatically.
I look at the source just to learn how the program works.
As silly as it might seems, the open source software ( such as open source CRMs) is notorious for the lack of documentation. The only way to find out how it works is to experiment with it. When even experiment fails, it's the time to fire up your IDE and read the source!!
Maybe the answer will be disappointing, but the relatively high number of source downloads could mean that the application is packaged in a port-based distribution like Gentoo, FreeBSD or MacPorts where every package is downloaded and compiled on a local machine during installation.
If it's a framework, I always download sources. I use them for debugging and to see how they've implemented certain things. If it's a standalone application, I generally don't look at the source unless there is a problem or the application does something unique.
As you say your binary is a jar, it sounds like it is a Java-library (rather than an application). Developers often use source: to include it in the IDE to debug in the library and lookup certain functions. Also many developers include the sources in their build-process to compile also the dependencies. That may be an explanation.
The number one reason is compiler settings. You can't imagine the amount of pain caused by linking a static library compiled with some incompatible settings. Compiling on your own with checked settings simplifies life greatly. Plus when you decide to change the compiler for the better one you don't need to have the old static library - it will be compiled by the new compiler two.
The number two reason could be that people want to see how some things work inside. For example, they want the same or similar functionality in their commercial closed-source project and can't just borrow code because of the viral license. However they can see how it works and get inspired - that't why they download the source and read.
I have downloaded libraries and compiled them my self but I have not actually looked at the code. When I use a library it is good to know that I can make changes and have the source on hand. I have on occasion taken just a file or two if it is a massive library and I only need a single functionality from a large library.
Some reasons could be:
Distrust of binary downloads due to trojans, etc
Taking a look at how you've implemented something
Checking out the quality of your code :)
Since this is a library, the need for comprehensive documentation is much higher than for a standalone app. I often find myself looking up the code of a library to figure out certain things sometimes left out of the docs, e.g. time/space complexity of certain functions.
We use some open source packages for our commercial application. I always download and build from source.
If our hosting platform changes in
the future, it might change to
something that does not have a
precompiled binary. I want to be
able to use the same package/version
on the new platform.
If the package goes dormant or
becomes unsupported, I want to be
able to apply a change or fix if
absolutely necessary.
If something is going wrong on the
server (memory leak, CPU spike,
etc.), I want to be able to add
logging or instrumentation code to
identify or eliminate the package as
the source of the problem.
I can of course only answer for myself, but it is not seldom that i download the binaries (assuming I trust the project which is usually the case), and the when I debug I download the sources. But I have a tendency to delete the sources when I think I'm done with them and since you are never really done I might have to redownload the sources later and thus causing the source downloads to be higher.