<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Sziasztok!<br>
    <br>
    Elsősorban a Java/Moka debug kapcsán érintettek figyelmébe:<br>
    <br>
    A Moka execution engine-t a korábban megbeszélteknek megfelelően úgy
    szeretnénk megvalósítani, hogy a Java debugger szolgáltatásait
    használjuk. Ehhez szükség van egy olyan API-ra, ami képes egy VM-et
    indítani, breakpoint-okat manipulálni és debug eseményeket
    lekérdezni.<br>
    <br>
    Máté tavalyi <a class="dir" title="View Directory"
href="https://plc.inf.elte.hu/modelinterpreter/trac/browser/experiments/compiler-moka-jdi-javaUML2">compiler-moka-jdi-javaUML2</a>
    példája erre a célra a <span class="nn">com.sun.jdi.VirtualMachine</span><span
      class="o"> osztályt használja.<br>
      Ezzel kapcsolatban egyrészt felmerül, hogy nem kötjük-e magunkat
      hozzá ezáltal egy konkrét JVM megvalósításhoz?<br>
      Másrészt meg kell oldani a kapcsolódó függőség kezelését: A case
      study a lib könyvtárában tartalmazza az Oracle-től letölthető
      JDK-ból a tools.jar-t, ami tartalmazza a szükséges osztályokat.
      Kérdés, hogy egy eclipse projektben szabad-e a JDK egy részét
      binárisan terjeszteni? A weben írnak olyan véleményeket, hogy a
      JDK csak egyben terjeszthető. Ha nem csomagoljuk be ezt a jar-t,
      akkor meg el kell várnunk, hogy megfelelő JDK legyen a
      felhasználóink gépén, és dinamikusan kell feloldaunk a
      függőségünket.<br>
      Ugyanakkor valamelyik org.eclipse.jdt.debug plugin-ban is
      megvannak a com.sun.jdi.... csomagok, ám ez nem része a plugin
      publikus API-jának, így ha ezzel oldjuk fel a függőséget, akkor
      warning a jutalom. A veszély nyilván az, hogy ezt a részt bármikor
      átírhatják nem kompatibilis módon.<br>
      <br>
      Azon tipródtam ma sokat, hogy lehetne-e használni a com.sun.jdi.*
      helyett az org.eclipse.jdt.* csomagok publikus API-ját? Ezek a
      csomagok standard eclipse pluginokban vannak, és JVM-függetlenül
      próbálnak Java szolgáltatásokat (többek között futtatás,
      debugolás) nyújtani. A breakpoint-ok elhelyezésénél még stratum
      beállítására lehetőséget adó függvényt is láttam. Az API
      használata nem triviális, mert többnyire egy halom interfészt
      nyújt, és elvárja, hogy a JVM implementációk extension pointokon
      keresztül adják az implementációt. Úgy tűnik, hogy a
      JavaRuntime.getVMInstallTypes(), majd a
      IVMInstallType.createVMInstall(String id) függvényeken át lehet
      VM-et kapni. Boldi, a saját típusú Launch konfigrációk nem valami
      org.eclipse.jdt.launching alá tartozó típust adnak véletlenül?<br>
      <br>
      Vélemények, segítség jöhet!<br>
      <br>
      Üdv,<br>
      Gergő<br>
      <br>
    </span><span class="o"> </span>
  </body>
</html>