Hi,

Thanks for asking :).

Indeed, the first thing is to have an open-source solution for Java. The main reason for this is that there are people that would like to play with Moose, and within the context of Java, I often get the feedback that people expect the availability of open-source solutions. I know that VerveineJ is available if you ask, but this step of asking looks expensive in the eye of a casual visitor. I would like to achieve a solution that can provide a one-click experience (or something close to that).

Besides being open-source, the main technical difference is that the concrete visiting and model building code is built in Pharo, not in Java. It relies on JNIPort to communicate with the JDT parser, and the visitor on the Java side just forwards the calls to the Pharo code. This implies that we can do live analysis without the intermediary step of generating a large MSE file. However, we are still at the beginning, and it can be that at the end it will prove that there are technical impediments. In that case, we will fall back to a Java-based implementation similar to VerveineJ.

I want to focus this month on getting far enough to understand the limits. There are many details to explore, and that is why I would benefit from help from the community.

If it works, the side-effect benefit of this project is that it will document that Pharo is actually able to communicate with a Java library for real use cases.

Cheers,
Doru



On Thu, Aug 6, 2015 at 7:19 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote:
Just wondering, how does it compare with VerveineJ? Is it just because it is open source?

cheers,
Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Aug 2, 2015, at 6:26 PM, Tudor Girba <tudor@tudorgirba.com> wrote:

Hi,

I would like to announce the jdt2famix project. This aims to be an open-source solution for importing Java projects into Moose:

The project is based on:
- JDT for raw parsing. This is implemented in Java.
- JNIPort for delegating to Pharo the Java methods that visit the Java AST.

Installation details can be found on the main project page.

The current importing logic is rudimentary, but the first goal was to setup the whole ping-pong between Pharo and Java. This one works, and I am quite happy about that. You can take a look at the JdtImporterTest.

CAVEATS:
- Due to a problem in JNIPort, currently, this project only works in Moose 5.0. 
- Also, for now it works out of the box only for Mac OS X.
- And, on top of that, it requires Java 1.6 for now (until we will get the Spur VM on 64 bits).

There are still quite some challenges left, but once we get this going, we would also be able to use deep AST analysis live, and to do incremental model update when something changes on disk. Furthermore, if it scales, this would not be based on an intermediary MSE file anymore.

I would like to ask for help in several directions:
1. Implement the full model import. This would require diving into JDT and implementing the corresponding mapping logic. I spent a few days on this. It is hairy, but it is not that impossible (only it has a ton of edge cases). This should be test driven, in that, for each case, we need to have a corresponding sample.
2. Fix JNIPort to work in Pharo 5.
3. Get the whole thing to work out of the box for Linux and Windows.
4. Check scalability.

Please let me know your opinions, and let me know if you would like to participate.

Cheers,
Doru

--

"Every thing has its own flow"
_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev




--
www.tudorgirba.com

"Every thing has its own flow"