Firme IDE e identificazione del software IDE

4

Sto cercando di decidere se cambiare IDE perché ho letto cose promettenti su NetBeans e IntelliJ, ma ho due domande interrelate (forse stupide):

  1. C'è qualche differenza nell'applicazione finale prodotta da tutti e 3 gli IDE, supponendo che tutti e 3 usino il codice identico (Java)? In altre parole, il pacchetto IDE rappresenta l'app finale in modi diversi o aggiungi un file di firma / filigrana di ordinamento?

  2. Spesso apprendo nuove tecniche e strumenti di programmazione leggendo il codice sorgente degli sviluppatori intelligenti. C'è un modo per identificare con quale IDE è stata creata una determinata app analizzando il codice sorgente di un'app Java? Ad esempio un file contenente "Built with NetBeans 8.0.2" o simile, da qualche parte?

posta Casey B. 15.11.2016 - 05:09
fonte

3 risposte

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! = compilatore.

Alcuni IDE hanno un compilatore incorporato che produce file eseguibili ma la maggior parte degli IDE usano qualsiasi compilatore installato. Gli IDE sono editori di testi glorificati. A loro interessa solo il compilatore perché vogliono eseguire il completamento del codice mentre digiti.

Se produci un codice sorgente identico e usi lo stesso compilatore, non importa se hai scritto il codice con NetBeans, IntelliJ, Eclipse, Notepad, Vi, Emacs o Windows Paint, assumendo che tu sappia come muovere un po 'a modo tuo per asciugare usando pixel.

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. Se c'è non dovrebbe esserci. La fonte si rivolge a un compilatore (o interprete). Gli umani bersaglio dell'IDE. È meglio sospettare che sia stato utilizzato IntelliJ perché sai che Joe ha scritto il codice e che a Joe piace IntelliJ.

    
risposta data 15.11.2016 - 06:29
fonte
4

Lavoro da anni con team che consentono a ogni sviluppatore di scegliere quale IDE usare, IntelliJ, NetBeans, Eclipse.

Le build (nel nostro caso) sono fatte da Gradle, Maven o Ant, usando Jenkins o Circle CI. L'IDE non è nemmeno presente nelle istanze di build.

Questo dovrebbe dare un'idea di come l'IDE indipendente possa provenire dal prodotto risultante. Stiamo modificando gli stessi file e progetti con IDE diversi ogni giorno. Principalmente con Netbeans e IntelliJ ora. La popolarità di Eclipse è diminuita un po 'di tempo fa. Un po 'di codice viene fatto anche con il nostro editor di testo preferito.

I problemi principali che ci vengono presentati variano da IDE a cose come, quali file o percorsi da inserire in .gitignore, quali plug-in utilizzare. Differenze su come gli IDE eseguono una distribuzione automatica su Glassfish (il più strano dei tre server di app coinvolti). Tomcat e Jetty non producono il maggior numero di domande.

Basandosi sul prendere alcuni progetti di altre società, di solito è abbastanza facile dire quale IDE stanno usando guardando il repository di origine, se non altro perché le persone non sempre sostituiscono le intestazioni di licenza e gitignore ( o equivalente) tutti i loro file di configurazione e automazione. E quando fanno .gitignore quei file, beh, possiamo leggere i file .gitignore per vedere cosa sono. Le persone in genere lasciano tracce della loro attività.

    
risposta data 15.11.2016 - 06:44
fonte
1

Un IDE come detto non è un compilatore. Un compilatore non è uno strumento di packaging per la tua applicazione compilata, uno strumento di packaging può includere o meno un builder di installazione.

Soprattutto in Java, tutti e 3 tendono ad essere applicazioni diverse (sebbene un IDE possa essere fornito con un compilatore e / o uno strumento di packaging e / o un builder di installazione).

Sia Netbeans che IntelliJ utilizzano in modo predefinito i compilatori standard di terze parti del settore e gli strumenti di compilazione e creazione e utilizzano per impostazione predefinita gli stessi.

Di conseguenza l'unico modo per distinguere l'applicazione pacchettizzata come creata usando l'una o l'altra sarebbe essere intimamente con certi schemi di generazione del codice impiegati da ciascuno che potrebbero condurre a specifici gruppi di classi, e metodi e nomi di variabili al loro interno, e funzionerebbe solo se quei generatori specifici fossero effettivamente impiegati.
E anche allora, il codice generato da uno di essi avrebbe potuto essere ulteriormente modificato nell'altro.

    
risposta data 15.11.2016 - 08:03
fonte

Leggi altre domande sui tag