4

I'm trying to decide whether to change IDEs as I've read promising things about both NetBeans and IntelliJ, but I have two interrelated (perhaps dumb) questions:

  1. Is there any difference in the final application produced by all 3 IDE's, assuming that all 3 use identical code (Java)? In other words, do IDE's package the final app in different ways, or add a watermark/signature file of sorts?

  2. I often learn new programming techniques and tools by reading source code from smart developers. Is there any way to identify which IDE a certain app was built with by analyzing a Java app's source code? Such as a file containing "Built with NetBeans 8.0.2" or similar, somewhere?

  • 2
    A close vote because the question asks to "find or recommend tools, libraries, programming languages, resources (including books, blogs, tutorials, and examples), or projects to undertake"? Seriously? I mean, the question is not flawless, but the close reason is a joke. Have you actually read the question? – Arseni Mourzenko Nov 15 '16 at 4:41
  • Java's a bad example but I do remember back in the day there were red faces in Redmond when some (peripheral) components of Visual Basic 4 were found to have been written in Borland Delphi based on the "signature" burned into the exe file. – mcottle Nov 15 '16 at 5:36
  • As a C# developer, I cannot answer your specific case. But it might be interesting to you that building a C# solution from command line by either calling msbuild (compiler) or devenv (Visual Studio) can lead to different resolving of project dependencies (devenv looks into the sln-file only, while msbuild searches thru the directory structure). That is, differences are possible depending how the build was started. – Bernhard Hiller Nov 15 '16 at 9:53
  • Looks like you think that the smart one is the IDE not the developer. IDE is just a tool, a brilliant code can be made with vim, notepad++, PSPad. No IDE is going to make you a better developer. Just more or less productive, what neither means "good". Just productive. The same way, wearing Usiant Bolt shoes wont make you the faster runner on earth – Laiv Nov 17 '16 at 8:06
5

Is there any difference in the final application produced by all 3 IDE's, assuming that all 3 use identical code (Java)? In other words, do IDE's package the final app in different ways, or add a watermark/signature file of sorts?

IDE != compiler.

Some few IDE's have a built in compiler that produces executables but most IDE's use whatever compiler you installed. IDE's are glorified text editors. They only even care about your compiler because they want to do code completion for you as you type.

If you produce identical source code and use the same compiler it won't matter if you wrote the code with NetBeans, IntelliJ, Eclipse, Notepad, Vi, Emacs, or windows paint, assuming you know how to bit twiddle your way to ascii using pixels.

I often learn new programming techniques and tools by reading source code from smart developers. Is there any way to identify which IDE a certain app was built with by analyzing a Java app's source code? Such as a file containing "Built with NetBeans 8.0.2" or similar, somewhere?

No. If there is there shouldn't be. Source targets a compiler (or interpreter). IDE's target humans. You're better off suspecting IntelliJ was used because you know Joe wrote the code and that Joe likes IntelliJ.

|improve this answer|||||
  • Thanks for your feedback. Does that mean that if I with a team of remote developers, there is no way for me to verify that they are not using pirated IDE's? I'd hate to have our project fail down the road because one of our developers in Europe was using a pirated version of IntelliJ for instance. I suppose if there is no way for me to find out now, then there is no way that it could jeopardize our company later. Thoughts? Of course we require each developer uses a legitimate license, but any safeguards I can implement is a bonus. Thanks. – Casey B. Nov 15 '16 at 17:38
  • 1
    Nope, no way anyone can tell. You can audit them but that's more likely to annoy them then to protect you. Give them a budget for tools. Don't be cheep. Being cheep on the tools is a sure way to waste money. Encourage them to use the best they can find. Sometimes the best is free and open source. But using the best tool for the job for them is what you want them doing. Don't micro manage this. – candied_orange Nov 15 '16 at 17:46
  • I think that's a critical point, budget appropriately so to discourage them from seeking pirated tools, and give them the best chances of success simultaneously. I feel our budget is appropriate but just wanted clarification on this IDE confusion, thanks for your time. +1 – Casey B. Nov 15 '16 at 17:53
  • Another point is you likely have programmers who pirated to teach them self these tools coming up through school. Some even take pride in their ability to do this. The answer to that is to let them know how you feel about it. You don't want them 'saving' you money this way. They're pros now. This is a big leagues. We don't do that here. Don't guilt them over their past. Show them a paradise where they can play with all the best toys. They'll build you something awesome. – candied_orange Nov 15 '16 at 18:05
4

I have been working for years with teams that allow each developer to choose which IDE to use, IntelliJ, NetBeans, Eclipse.

Builds (in our case) are done by Gradle, Maven, or Ant, using Jenkins or Circle CI. The IDE is not even present on the build instances.

This should give some idea how independent IDE can be from the resulting product. We're editing the same files and projects with different IDE's every day. Mostly with Netbeans and IntelliJ now. Eclipse popularity waned a while back. Some code is done with our favorite text editor at times too.

The main issues that come up for us that vary between IDE's are things like, which files or paths to put in .gitignore, which plug-ins to use. Differences about how the IDE's do an automated deploy to Glassfish (the quirkiest of the three app servers involved). Tomcat and Jetty don't produce as many questions.

Based on taking in a few projects from other companies, it is usually fairly easy to tell what IDE's they are using by looking at the source repository, if only because people don't always replace the default license headers and .gitignore (or equivalent) all their configuration and automation files. And when they do .gitignore those files, well, we can read .gitignore files to see what they are. People typically leave traces of their activity.

|improve this answer|||||
  • Thanks Josh, you've made 2 interesting points which I hope you can clarify. I'm trying to ensure each of our 9 team members adhere to our code of conduct which requires using an authentic license for the IDE of their choice. This sounds like it may be impossible though, even if they leave all default headers and other IDE identifiers, it likely wouldn't be able to tell me whether they've actually activated the IDE with a valid license or not :S Thoughts? Feel free to ignore this question as it involves your AS point, but what about WildFly? Where does that size up with the other 3? Thanks – Casey B. Nov 15 '16 at 17:42
  • @CaseyB. I have no experience with WildFly. Just the three I mentioned. – joshp Nov 15 '16 at 19:16
  • @CaseyB. As for IDE licenses, doesn't that question only apply to IntelliJ in practice, because Eclipse and Netbeans are available for free use under EPL and GPL? IntelliJ has its own license protection features. Those seem like more than enough to me, when combined with reasonable IT policy. So I don't have an answer to that question. – joshp Nov 15 '16 at 19:42
1

An IDE as said is not a compiler. A compiler is not a packaging tool for your compiled application, a packaging tool may or may not include an installer builder.

Especially in Java all 3 tend to be different applications (though an IDE may ship with a compiler and/or a packaging tool and/or an installer builder).

Both Netbeans and IntelliJ default to using industry standard 3rd party compilers and build and packaging tools by default, and they by default use the same ones.

As a result the only way to distinguish the packaged application as having been created using one or the other would be to be intimately with certain code generation patterns employed by each that might lead to specific groups of classes, and methods and variable names within them, and that'd only work if those specific generators were actually employed.
And even then, the code generated by one of them could have been further edited in the other.

|improve this answer|||||
  • But, for example, Eclipse uses ECJ (Eclipse Compiler for Java), which is derived from the same source base as the IBM Jikes Research compiler (namely the Smalltalk compiler from VisualAge, via VisualAge for Java and VisualAge for Java Micro Edition) and shares zero ancestry with Sun/Oracle javac (which was written by Martin Odersky, the designer of Scala). I believe in the default configuration, Eclipse only uses ECJ for incremental compilation, worksheets, syntax highlighting, refactoring, code analysis, autocompletion, etc. and uses the project SDK's compiler for the final build. But you … – Jörg W Mittag Nov 15 '16 at 11:29
  • … certainly can use ECJ for the final production release packages as well. – Jörg W Mittag Nov 15 '16 at 11:30
  • +1 for making a few different points that the other answers, thank you. I'm leaning towards IntelliJ since half our team uses it and speaks highly of it. Due to my unfamiliarity with it and NetBeans, I was hoping to be able to identify which types of IDEs each of our members use, as to ensure adherence to our policies. Due to the limitations you've outlined, and the intimacy with the source code that's required to making more general conclusions such as the IDE itself, I'm assuming it's impossible to determine if one of my members were using pirated IDEs, or is that a non-issue? – Casey B. Nov 15 '16 at 17:49
  • I'd be interested to hear how other companies deal with this... can one developer using a pirated IDE jeapordize the entire appliction (and thus company)? It seems impossible to monitor their independent systems, which means they likely wouldn't be found out, so should we not worry? We have some thinking to do, thanks for your time. – Casey B. Nov 15 '16 at 17:50
  • @CaseyB. a pirated IDE can cause serious legal problems for the company if there is ever an audit and it is caught (and if the audit is thorough it WILL get caught). That's why many companies don't allow employees and contractors to use their own software and licenses, only those supplied by the company. With the ever increasing BYOD policies that's getting harder, but it does mean that if there is an audit you're going to be in legal trouble yourself. And then there's the serious moral issues withn using pirated software, you're stealing from colleagues, depriving other devs of an income. – jwenting Nov 16 '16 at 8:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.