Re: [jdee-devel] Call to Fork or simply for JDEE TODO items

Dave Paroulek <[email protected]> Wed, 1 May 2013 10:18:21 -0400
Newsgroups gmane.emacs.jdee.user,gmane.emacs.jdee.devel
Message-ID <CAB+u7Z5BAdKcVC8OijGB-q+FNvYUyt1_-dLQuk-EqosP9o6Eww@mail.gmail.com>
Hi all, just wanted to chime in and say I'm excited about this thread! I'd
really love to use emacs to as my java IDE. And it'd be a fun challenge and
learning experience for me to help with development of the effort. I'd like
to help where I can, so please feel free to assign me tasks ;-). I'm fluent
in java, elisp and clojure, but I can pick up other langs as needed. I'm
primarily a web developer but looking for an excuse to stretch my skills
and learn more about lower level intricacies of parsing, compilation, etc.

I think Paul's high level design sounds good:

I recommend the following components for the fork:
> - Java program to host development "services": compilation, debugging,
> code generation.  This is a separate process.
> - Maven: either as a separate JVM process or preferably in the same JVM as
> the development services JVM
> - Emacs: Brand new code base with limited JDEE functionality that make
> sense to bring over (i.e. highlighting).


And I think Przemek's list of features is a great start. I'm guessing that
we all have a list of features like that we'd love to have available in
emacs. Once the development services component takes a basic shape, my
understanding is that all features in his list can be accomplished by using
a combination of existing jdee code + new code (and maybe pulling in some
ideas from other libs like malabar, etc).

And +1 for unit tests!

>From the ideas described on the thread so far, I think it would be possible
to implement features using a strategy like this:

1) a new elisp client lib exposes api for each feature

2) the actual implementation of the feature can make use of existing jdee
code, cedet code, and/or new code that runs in development services
component jvm process that elisp client lib knows how to communicate with
(using lisp as data format).

3) emacs users can then easily make use of development services elisp
client api. modes can be built on top, etc.

As a concrete example, here's some elisp that I hacked together a while
back. It's a very simple way to search the maven repo for dependencies and
add the results to the current pom.xml:

http://javajing.com/2012/08/25/emacs-maven-mode.html

If the development services jvm + elisp client lib existed, then I could
change this maven dependency example code to call the api of the
development service in order to search for dependencies. The development
service could then use whatever mechanism makes the most sense to do
actually perform the search for the dependencies under the hood. Maybe it
would use maven api to do a search, or maybe we write custom code to stuff
metadata about dependencies into some sort of search index, or whatever.
There could even be multiple implementations for searching dependencies.

Using lisp as the data format for communicating between a development
services jvm process and a elisp client lib sounds good to me. I'd vote for
clojure flavored lisp, but if the consensus is for ABCL, that's fine too,
it'll be fun to learn ;-)

I hope that makes sense and I'm interested in any feedback. I'm also
interested in diving into figuring out and peoples thoughts about the best
libs to use for parsing and compiling java code.

Excited to help out, please let me know when you setup the repo (and I'd
like to add my vote for git if it's a option).

Thanks!
Dave

On Wed, May 1, 2013 at 8:22 AM, Przemysław Wojnowski
<[email protected]>wrote:

> Hello everybody!
>
> A roadmap can be based on what is most commonly used in different Java
> IDEs:
>  1. Easy installation and configuration
>     No one will use JDEE if it takes a weekend to make it up and
>     running.
>     For example available JDKs (jde-jdk-registry) usually can be setup
>     automatically from: JAVA_HOME, default paths in OS (/usr/lib/jvm,
>     "C:\Program Files\java", etc.).
>  2. Integration with build tools (especially Maven)
>     By that I mean loading project configuration (source/test
>     classpaths) form build tool definition - pom.xml in case of Maven.
>     This is a must for any non-HelloWorld project.
>  3. Code completion
>     IMHO from this point JDEE can be used at all.
>  4. Jumping around the code - back and forth.
>     To types/methods/fields at point, even if they are in external
>     libraries (sources usually can be downloaded from Maven repo).
>  5. Finding usages of fields, methods, types.
>     I use it everyday for finding dead code. It's also for refactoring
> tools.
>  6. Debugger with GUI.
>     There was such project. Maybe it could be integrated with JDEE
> sometime.
>  7. Jump to compilation errors
>     During editing and form build tool window.
>  8. Execution of selected tests (especially currently edited one)
>     It's just TDD routine.
>  9. The most common refactorings
>     Rename field/method/class. Extract method. Move class (for example
>     static nested class to it's own file).
>  10. Easy way to write extensions for JDEE.
>  11. Configurable indentation.
>  12. Facets/extensions for common technologies (Spring, JPA/Hibernate):
>      - indicate which classes are Spring beans
>      - jump to a bean definition
>      - find beans implementing given interface
>
> It's just a roadmap, my idea for what's important for any Java
> development. You even don't have to agree with it and can pipe
> to /dev/null. :-)
>
> Of course Java IDEs have many more features, but from what I've seen for
> past 9 years of work as Java developer most of work is concentrated
> around writing tests, code, simple refactorings, and jumping around the
> code. :-)
>
> IMHO from the development perspective, it would be cool to write some
> unit tests for features (especially in elisp). In Java world it's a
> standard. If someone is not used to it I just can tell that it prevents
> regression and enables refactoring. If it's not a standard practice in a
> project, then it quickly becomes unmaintainable and sooner or later
> dies.
>
> BTW As a developer I can contribute Java, elisp, and some Clojure if
> needed.
>
> Cheers,
> Przemek
>
>
> ------------------------------------------------------------------------------
> Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
> Get 100% visibility into your production application - at no cost.
> Code-level diagnostics for performance bottlenecks with <2% overhead
> Download for free and get started troubleshooting in minutes.
> http://p.sf.net/sfu/appdyn_d2d_ap1
> _______________________________________________
> jdee-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jdee-users
>



-- 
Dave Paroulek
m. 703.989.3562

------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1

_______________________________________________
jdee-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jdee-users