Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Idea plugin suggestion #393

Open
skybber opened this issue Oct 14, 2024 · 11 comments
Open

Idea plugin suggestion #393

skybber opened this issue Oct 14, 2024 · 11 comments

Comments

@skybber
Copy link

skybber commented Oct 14, 2024

Hello,

I've been using JitWatch for some time and appreciate its capabilities in analyzing JIT compilation in Java. I'd like to propose modifying JitWatch into a plugin for IntelliJ IDEA. Integrating it directly into the IDE could offer advantages like better interaction with source code and other tools provided by Idea.

I've developed a prototype plugin that appears as a Tool Window in IntelliJ. A short demo video is available here: https://youtu.be/cGskItzVZyQ

I think it wouldn't be too difficult to get this plugin to a usable state, and I'm willing to invest time into the project to develop its potential further. I'd be happy to contribute to the development and collaborate on making this integration a reality :)

@bourgesl
Copy link

Yes it is very promising, I can help and very interested !

Hi Chris !!

@chriswhocodes
Copy link
Member

Hi @skybber @bourgesl there was an IDEA plugin for JITWatch built by @yole back in 2016 : #206

Maybe it's possible to extend that to achieve what you need?

Kind regards,

Chris

@yole
Copy link
Contributor

yole commented Oct 15, 2024

For reference, the code of my plugin is here: https://github.com/yole/jitwatch-intellij

@skybber
Copy link
Author

skybber commented Oct 15, 2024

I have read both plugins. Jitwatch is more advanced, jitwatch-idea provides better integration to IDEA. jitwatch is ~45k lines of code and it seems too much work to port it to Swing at once. It seems to me easier to make jitswatch working as IDEA plugin at first, than integrate with IDEA editor and then (optionally) switch it to Swing.

@chriswhocodes
Copy link
Member

Hi @skybber what's the bigger problem you're trying to solve?

JITWatch works as a standalone desktop application on all platforms with a JavaFX UI. It also exposes the engine so you can run it headless, as a plugin, or with a different UI. There shouldn't need to be any changes to the core.

Kind regards,

Chris

@skybber
Copy link
Author

skybber commented Oct 15, 2024

Hi Chris, for me, the main issue was the seamless integration with the source code. I had trouble configuring JITWatch for a project with a large number of modules, so I made my own modifications that don't depend on the source code. I think that the infrastructure for integrating a decompiler and downloading source files from JAR files is currently missing in JITWatch? This could potentially be solved in IDEA. Another issue is the slowness of the time graphs displaying method compilations, which become useless when dealing with projects that have tens of thousands of compilations.

@skybber
Copy link
Author

skybber commented Nov 19, 2024

Firstly, thanks for creating JITWatch—it's a great tool. I'm working on - jitwatch4i - plugin for IntelliJ, which is based on JITWatch and jitwatch-idea. The plugin uses the core of JITWatch (unchanged) but completely reworks the UI into Swing. The end result seems faster compared to JavaFX. For the parts derived from the original JITWatch UI, I’ve kept the headers with credits intact. Right now, the plugin is in beta, and the source code is available at:

https://github.com/skybber/jitwatch4i

I wanted to ask if you’d be open to changing jitwatch4i license from BSD to Apache v2.0, or at least discuss what conditions would make that feasible (I'm asking since the jitwatch is BSD). The main reason is fact, that Idea plugins are usually distributed with Apache v2.0.

@chriswhocodes
Copy link
Member

Hi @skybber , I chose the BSD 2-clause license because it's one of the the least restrictive open source licenses so anyone can extend and share JITWatch any way they like, including commercially. I don't think it benefits the community to try to change to a more restrictive license? With over 30 contributors to the project it would also be legally difficult.

I see you've chosen to copy the JITWatch source files into your project? Would it not be better to make a dependency on jitwatch-core so that you can benefit from any updates I make?

Kind regards,

Chris

@skybber
Copy link
Author

skybber commented Nov 20, 2024

Regarding the BSD license, that makes sense, I hadn't realized that. So jitwatch4i will also be BSD - it's simpler.

The core is in the project because it's more flexible for changes on start of project. I plan to use a standard JitWatch core from maven in future. For example, I worked on support for visualizing L1-L4 in a timeline graph, and the core currently does not have it.

@chriswhocodes
Copy link
Member

Cool, I will look at publishing JITWatch-core as a maven artefact.

@bourgesl
Copy link

Looks good to see smart people collaborate so fluently for all goods!

Congratulations!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants