Open Source Projekte / source - binaries

martin1989

Aktives Mitglied
Hallo!

Ich habe eine Liste von Open Source Projekten die ich mir gerne herunterladen möchte, da ich mit denen eine kleine Analyse durchführen möchte, zB.:

1_jabref-2.5
2_tomcat-6.0.24
3_tight-vnc-java-1.3.10
4_azureus-vuze_4.5.1.0

Ich brauche für meine Analyse sowohl den source code als auch den bytecode.

Wenn ich mir die Open Source Projekte anschaue, weiß ich oft nicht was ich mir hier genau runterladen soll. zB hier JabRef - Browse /jabref/2.5 at SourceForge.net

Was ist hier mit "scr" gemeint? Ist dann in diesen Projekten nur der source code drinnen oder auch schon der bytecode?

Oft wird auch schon vor dem Download unterschieden ob ich scr oder binaries laden will - binaries sind nicht gleich bytecode oder?

Ich verwende dann meist einfach den ordner "scr" und "bin" für mein Analyse aus dem runtergeladenen projekt ... also im "scr" ist dann der quelltext und in "bin" ist der bytecode"

Wenn ich ein projekt runterlade wo ich nur den sourcecode haben, dann kann ich mir ja quasi den "bin" ordner, also den bytecode selber erzeugen mit eclipse oder?

zB hier:

fckeditor-java-2.6-src.zip (or tar.gz)

If you want to checkout the integration pack's source code, refit to your needs (obeying the license terms) or compile yourself, this is the perfect distribution for you.

Muss ich das runterladen, in Eclipse kompilieren damit ich den bytecode bekomme?


Vielen Vielen Dank!
 
Zuletzt bearbeitet:
src für SouRCe, bin für BINaries 🙂
Aber compilieren kannst du ja auch selbst, wenn du die sourcen hast...
Im Grunde beantwortest du deine Frage doch schon selbst.
 
Zuletzt bearbeitet:
was ist dann der unterschied zwischen binärcode (Ordner bin) und binaries?

Liege ich hiermit richtig:

Open Source Software die ich als "src" runterlade muss ich kompilieren um "binärcode" zu bekommen?
Open Source Software die ich als "binaries" runterlade, habe schon binärcode dabei?


Bezüglich den Komplieren:

Muss ich den "src" ordner in eclipse importieren und dann müsste ja eigentlich schon automatisch binärcode erzeugt werden, da eclipse ja automatisch einen build durchführt oder?


Danke!
 
Soweit die Theorie. In der Praxis liefern die Open Source Projekte nur Ihren eigenen Quellcode, haben aber Abhängigkeiten von anderer in der Regel Open Source Software um deren Auflösung du dich selbst kümmern darfst. Ein einfaches Import nach Eclipse reicht daher wahrscheinlich nicht.
 
Soweit die Theorie. In der Praxis liefern die Open Source Projekte nur Ihren eigenen Quellcode, haben aber Abhängigkeiten von anderer in der Regel Open Source Software um deren Auflösung du dich selbst kümmern darfst. Ein einfaches Import nach Eclipse reicht daher wahrscheinlich nicht.

Naja, dafür gibts ja Maven und co...
 
was meinst du mit abhängigkeiten von anderen projekten und was verstehst du unter "auflösen"?

und in wie weit helfen dann maven und co dabei?
 
was meinst du mit abhängigkeiten von anderen projekten..
Projekte verwenden oft andere Projekte als Libraries. Dann musst du dir zum Compilieren/Starten auch diese Libraries besorgen.

...was verstehst du unter "auflösen"?
Damit meint man, dass man sich diese Libraries (in der richtigen Version !) holt und auf seiner Festplatte in die richtigen Verzeichnisse (Classpath,..) kopiert.

und in wie weit helfen dann maven und co dabei?
Bei Maven - um jetzt ein Beispiel zu nennen - hast du eine Projektbeschreibungsdatei. Diese enthält unter anderem alle von dir benötigten Libraries inkl. Versionsnummer. Maven fragt dann bei den sogennaten Repository-Servern nach. Dort liegen enerseits die fertigen Libraries, aber auch deren Abhängigkeiten bereit. So kann Maven Schritt für Schritt alle benötigte Libraries zusammensuchen.
 
@Dompteur

Weißt du, wie Maven genau die Dependencies auflöst? Welche Seiten (in welcher Reihenfolge) danach abgesucht werden?
Für mich sieht es immer nach Magic aus, dass sowas hier tatsächlich die benötigten Dateien findet und runterlädt:
Code:
  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.0</version>
      <type>jar</type>
      <scope>test</scope>
      <optional>true</optional>
    </dependency>
 
Bei Maven definierst du eine Liste von Servern, auf denen Repositories gehostet sind. Diese werden bei der Suche nach einem Artifakt einfach der Reihe nach durchsucht, bis das Artifakt schließlich gefunden wird.

Das von dir als Beispiel gebrachte Code-Stück beschreibt ein Artifakt.
"groupId", "artifactId" und "version" definieren das benötigte Artifakt.
"type" sagt, dass es ein jar-File ist.
"scope" beschreibt in welche Phase des Build-Prozesses es benötigt wird. Hier wird jUnit.jar nur für die automatischen Tests benötigt.
Zum jar-File gibt es dann auch pom-File. Dieses listet alles auf, was dein Junit braucht.

Für Eclipse gibt es ein Plugin, dass verschieden Sichten auf diese Informationen bietet.
 
Hier mal die komplette POM.

maven.apache.org bringt mich doch nur zur Hauptseite von Maven, wo auch die ganzen Tutorials und die Doku zu finden ist?
Ich bin mir auch nicht bewusst, irgendwo anders im Projekt Repos definiert zu haben.

Code:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>app</groupId>
  <artifactId>AddressBookMaven</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>AddressBookMaven</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-core</artifactId>
		<version>4.3.9.Final</version>
	</dependency>
	<dependency>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j-api</artifactId>
		<version>2.2</version>
	</dependency>
	<dependency>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j-core</artifactId>
		<version>2.2</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.35</version>
	</dependency>
	<dependency>
		<groupId>org.hsqldb</groupId>
		<artifactId>hsqldb</artifactId>
		<version>2.3.2</version>
	</dependency>	
	<dependency>
		<groupId>com.google.code.gson</groupId>
		<artifactId>gson</artifactId>
		<version>2.3.1</version>
	</dependency>	
	<dependency>
		<groupId>org.jmock</groupId>
		<artifactId>jmock-junit4</artifactId>
		<version>2.8.1</version>
	</dependency>	
	<dependency>
		<groupId>org.apache.httpcomponents</groupId>
		<artifactId>httpclient</artifactId>
		<version>4.3.6</version>
	</dependency>
  </dependencies>
</project>
 
Zuletzt bearbeitet:
Hallo!

vielen dank für eure Beiträge!

ich hab jetzt mal ein paar opensource projekte runtergeladen und will anhand eines beispieles gerne noch etwas fragen:

ich hab mir junit runtergeladen:

https://github.com/junit-team/junit

dann hab ich das in eclipse importiert und dann macht er ja automatisch einen build und erstellt einen bin ordner wo der bytecode reinkommt. Damit wäre ja mein zweck schon erfüllt, ich brauche ja nur den dazugehörigen byte code. Ich will es ja eigentlich nicht starten bzw. compilieren , ich bräuchte nur den bytecode zum source code.

Nun stellt sich für mich die frage, woher weiß ich das dies jetzt vollständig ist? also das ich den gesamten bytecode habe bzw. ob noch irgendwo externe libraries fehlen oder so wo noch bytecode fehlt? Erkennt man das an rufezeichen im eclipse oder so?

Danke!
 
Hi,
in der settings.xml kann man lediglich weitere Server (Repositories etc.) definieren und auch den Default (Maven Central) überschreiben.

Die Maven Installation liefert eine Super POM mit, in der die Defaults z.B. für Maven Central definiert sind und daher weiss Maven auch wo es Abhängigkeiten herbekommt.

Gruß
Karl Heinz Marbaise
 
Hab bisher genau 12 Java Open Source Projekte ergattert die sowohl source als auch bytecode zur verfügung stellten.

Wenn ich nur den Source Code habe, ist das ByteCode erzeugen wirklich nicht so einach. Auf GitHub und Sourceforce findet man vorwiegend nur source code.

Sollte jemand noch Projekte kennen die ihren Code als Byte und Source zur Verfügung stellen, so wie das hier Twinkle: A SPARQL Query Tool wäre ich froh wenn ihr es einfach kurz posten könntet. danke 🙂
 
Zuletzt bearbeitet:

Zurück
Oben