Re: Proposed New Structure (starter for 10)
Paul Landes <[email protected]> Fri, 14 Aug 2015 18:19:18 -0500
| Newsgroups | gmane.emacs.jdee.devel |
|---|---|
| Message-ID | <[email protected]> |
We need something a little more formal to sort what everyone wants and who's tackling it. You've already started a list to this effect on GH--maybe we expand on it. On Aug 14, 2015, at 5:40 PM, Przemysław Wojnowski <[email protected]> wrote: > To begin with. My project vision is that JDEE will be (at least) something > IDE-like, which means that it would be: > 1. Project oriented (contrary to file oriented). It should be good enough to > work on enterprise Java projects - create and load them. > 2. Have core features: > - automatic configuration of classpaths (source, compile, test, runtime) > from build tools (Maven, Gradle, etc.) > - code completion > - jumping around the code (also into libraries, when code is available) > - viewing javadocs > - running app (static and in a container - e.g. Tomcat) > - running tests > - finding usages of fields, methods, classes > - constant compilation > - debugger > - extendibility (through plugins) > - basic refactoring support > > I'm not interested in working on a major-mode just to open a Java file from > time to time - java-mode is good enough for that purpose. > > It's just to be clear what my goals are. If your's are different then it would > be good to know sooner than later. :-) > > W dniu 14.08.2015 o 18:51, Phillip Lord pisze: >> https://github.com/phillord/jde-with-clojure-backend >> >> The four components are: > In the repo they are separate projects. Was that on purpose? > >> jde -- this will be the Java centric major mode. It will involve NO JVM >> interaction and not depend on any of the other parts. The "minimal >> viable product" here is a ELPA packaged major mode that is a child of >> Java mode and adds no functionality. > I don't get it. If it adds no functionality then what is its responsibility? > >> jde-interactive (crappy name, sorry) -- a minor mode which will be >> active once the JVM (bsh interpreter equivalent) has been started and is >> running. > What should be responsibility of this component? > > Does it have to be in separate project? IMHO having them in the same repository > and directory would make it easier for us to manage - develop and release. > >> In the short term, this will have a dependency on cider, but >> eventually this may just become a dependency on nrepl-client.el. I say >> may, because, I think quite a bit of the cider functionality (like the >> inspector) is JVM centric and entirely relevant. > IIUC cider has some functionality that would be useful for us. I don't know > cider well enough to justify/deny that, but my concerns are: > 1. Is cider code written in a way that it can be reused from outside cider by > someone who is _not_ cider author? > 2. What dependencies exactly we would bring with cider? > 3. IIUC if we depend on some cider version then automatically Emacs user has to > use that version. So if we, for some reason, depend on some older version, > then it prevent user from upgrading cider. > >> The MVP here is to use maven inside a project to launch an nrepl, and >> then to invoke a call to get the version number of the jde-nrepl >> middleware and check that it is consistent with the version of jde-interactive. > Do you mean to start nrepl from Maven in a maven-based project? > In such case users would need to add nrepl libs to each project they want to > work on. What about other types of projects and projects without any build tool? > Am I missing something? > > Or maybe Maven starts nrepl and the loads a maven-based project? > >> jde-nrepl -- this is the nrepl middleware that provides all the backend >> functionality, like class look up and the like. The MVP here is to >> install some middleware into a nrepl, which returns a version map for >> checking my jde-interactive, and which is packaged as a maven dependency >> on clojars. >> >> jdee-sample -- this is a sample project. Requirements in the short term >> are that the project depend on jde-nrepl and >> https://github.com/talios/clojure-maven-plugin to provide the nrepl >> functionality we need. Typing "maven jde:nrepl" or equivalent should >> result in a nrepl session. > Dependency cannot be from project to IDE. In many, many projects nobody will > allow to add such dependency. IDE (our server side part) has to start a project > with deps we need. > To do that a user would need to have a jde-server var set to path of our > backend code, which we would start from jde-interactive. > >> MVP having a packaged jde-interactive that can install, that starts when >> we open "App.java" in jdee-sample, and which can then invoke a method of >> the class object coming from App.java. > IIUC when user opens App.java then we should find project file, configure > everything, start server and then do code completion, right? > What when user will open a Java file in another project? > > In such case I would prefer project-centric approach. User creates/opens > project, have JDEE configured for that project. If s/he wants to work on another > project (have code completion etc.) s/he would need to open other > project (config, start server, etc.). > >> In the long term, I would expect that all four of these would be >> separate repos. > I was thinking to have only two separate projects at the beginning: > 1. jdee-emacs/jdee with all elisp part (project config, jde-interactive - maybe > jvm-connector?, etc.) > 2. jdee-emacs/jde-server with Java code and all JVM related stuff (nrepl, etc.). > It could be just a Maven project. > > Thanks, > Przemysław > > ------------------------------------------------------------------------------ > _______________________________________________ > jdee-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/jdee-devel ------------------------------------------------------------------------------ _______________________________________________ jdee-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jdee-devel