Giter Club home page Giter Club logo

java-wdb's Introduction

Java on Windows

About half of the Java developers around the world are using Windows computers. We would like to ask you, who is developing Java applications on Windows: How can Microsoft make Windows any better for Java developers?.

This project holds user requests for enhancing Java development productivity on Windows.

Please visit the Issues area to submit your idea/request/story and check on others' proposals and progress.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

java-wdb's People

Contributors

brunoborges avatar microsoftopensource avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

doytsujin

java-wdb's Issues

Dashboard on open ports and services

Summary

It would be nice if there would be an app on which you easily have an overview of the open ports and services started by the logged in user (without listing all the system apps).
Sometimes you want to know which ports are open and by which process they are used.

Also resources consumption can be part of this dashboard.

We can do it by many different tools already, but some tool which combines this information can be useful.

Contribute to improve Eclipse on Windows

It would be great if Microsoft could contribute to Eclipse development in some way.
It could be for example assigning some developers(s) to tackling some Windows specific Eclipse or SWT issues (or any other issue that Microsoft would like to tackle).

One click Java setup

Summary

Setting up Java along with required software is tedious, provide one click solution with an option to set up environment with all tools/software of user choice just like how start.spring.io does.

To bring more awareness provide documentation about what is the use of each tool, like one stop solution.

Make WSL2 - Host ports access seamless

Summary

For several back-end stack/services, Java developers rely on launching local docker images. With WSL 2, accessing the open ports / running services on Windows host has become tedious.

Motivation

With WSL 1, when a running docker image exposes ports on Windows host, access via shell was seamless. With WSL 2, this requires explicit configurations. May be the need for tightening access controls took precedence here (probably due to WSL 2 architecture changes), but some simplification about accessing host ports from WSL 2 shells could be very useful in simplifying the development experience.

Better COM interop for Java on Windows

Summary

Initiate and support an integration library and toolchain for interacting with existing native components through COM.

Motivation

A plethora of existing native components is available on Windows that expose a COM interface: parts of Windows itself, other Microsoft products, as well as endless third-party applications, components and libraries. While there are a number of integration libraries available for the JVM, most of these have glaring bugs and memory leaks, and are de-facto unmaintained.

The extent of the existing component ecosystem is huge. In many cases, there are no alternative APIs beyond COM.

If would be a great improvement to have a maintained and supported COM integration strategy for Java. Initially though JNI, but also taking advantage of JEP 191/JEP 393 going forward. Many existing Java/COM integration projects are limited to IDispatch support, which comes with a serious performance penalty.

In an ideal world, integrating with existing COM components would be as fluent and easy from Java as it is from .NET.

Enhanced CMD.exe prompt

Summary

Enhance CMD.exe with features found in modern shells.

Powershell is ok for scripting, but is a step too far for an everyday working shell. Using bash (either in wsl or via cygwin) causes issues as paths are not as expected when you invoke tools.

For example things missing are

This is possible by third party extensions like https://github.com/mridgers/clink but it is not a supported solution.

Basic example

In the PROMPT I can see at a glance things like git branch/ kubernetes cluster / directory when you have multiple consoles open

Motivation

As a developer I often drop to the CMD.exe console to perform many tasks and have many consoles open at once when debugging / tracing applications.

Being able to efficiently use the CMD.exe benefits me by providing me with more contextual information so I am more efficient, and means I am less likely to delete the wrong kubernetes cluster.

Environment Variables dialog improvements

Summary

Improve the usability of the Environment Variables UI dialog, as well as the ease of accessing it.

Basic example

Currently, accessing the Environment Variables UI dialog in Windows involves five or six clicks through the Control Panel and Advanced Settings, or running a Powershell command that you need to look up each time.

The UI dialog also doesn't make it easy to add multiple variables at the same time, doesn't support copying-and-pasting variables, and makes it difficult to view the entirety of a long value for an environment variable (like the Path variable).

Motivation

Java developers often interact with environment variables when installing tools like Gradle or Maven. Improving the accessibility and usability of the Environment Variables dialog will make it much simpler to manage these settings and reduce the frequency of errors encountered when setting up a new tool that requires one or more environment variables to be configured.

ZipFile/JarFile should open zip/JAR file with FILE_SHARE_DELETE sharing mode

This issue serves mainly as link to JDK-8224794:

➡️ https://bugs.openjdk.java.net/browse/JDK-8224794

...and also collects examples, other bugs entries and more stories related to JAR file "being locked by another process":

Windows javafx

Please make javafx run on windows os by default
So we can create applications and run it easily on the system and share it with others windows os system

Improve performance at the presence of malware scanners

Summary

Java run- and build-times environment on Windows are especially badly affected by on-access malware scanners which are mandatory on many organizations systems. The fact that large number of jar (aka zip) files are involved and exceptionally bad handling of reading and writing archives in most (all?) scanner products (including defender) really can slow a maven build or application server startup down.

Basic example

Running a maven build on larger project, starting Eclipse or Karaf runtime...

Motivation

Developers on Windows often have to stick to malware scanners and excludes are risky (and do not always help due to some heuristics of malware and endpoint scanners)

Unfortunatelly I don’t have a good answer how to fix it, maybe besides having new APIs for controlling scanners and simply providing a scanner which works better for those java workloads?

Provide DPAPI implementation

Summary

Have support for protection credentials with the platform protections offered like DPAPI (and/or tpm) without the need for a self compiled .DLL

Motivation

This could help servers to bind secret storage to their platform. There are multiple (win)(j)dpapi(64) projects out there which try to provide this function.

Make ActiveX easily accessible from Java

Or so I thought, but it has been a while, and it seems ActiveX is deprecated. What is the replacement?

Anyhow, the real question probably would be: make controlling Windows apps from Java easier. As an example: I have some VB6 code in place (as said, it has been a while) at a client that controls PaintShop to run through some steps while fetching data from a database. I would have preferred to do that based on my in Java written domain model, but the existing ActiveX options in Java were (are?) buggy.

Sdkman port for windows

Summary

Sdkman is a great tool to install and manage java tools. While it is possible to use sdkman in WSL2 and some of the tools available in sdkman can be installed using choco or winget, it would be really helpful to have sdkman or its artifacts available easily in native windows.

Fix Windows Defender issues

Hello, thanks for creating this repository! 👋🏻

Describe the bug

Eclipse, IntelliJ and other Java programs are significantly slowed down by Windows Defender. This makes Java development on Windows difficult: for example, an IDE may take several minutes to launch compared to a few seconds on other operating systems.

This issue was originally reported on the Microsoft Feedback Hub and initially received many upvotes, even though the voting system has since then been removed from the hub. Here's the full report written by Rolf T:

Windows Defender significantly slows down access to jar files, even if these jars are correctly signed. As a result, any java process is significantly slowed down. This is especially true for IDEs such as Eclipse and IntelliJ which regularly access jar files while they are being used. This results in many random hiccups and slow downs of the processes, up to the point where they become unusable.
The only viable workaround seems to exclude these processes from being scanned by Windows Defender, which kind of defies the whole purpose of having the scans at all.

Just only running "jar -tf any.jar" makes Windows Defender spike on CPU usage.

See also:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=548443
https://blog.jetbrains.com/idea/2019/06/intellij-idea-2019-2-eap5-commit-from-local-changes-and-more/

The problem becomes worse on a laptop while on a battery power. To reduce battery consumption, the priority of Windows Defender seems to be lowered. As a result, the slowdown of the processes accessing a jar file is even worse.

To Reproduce

Install and launch Eclipse, IntelliJ or other Java programs on Windows.

Expected behavior

Windows Defender should not slow down Java programs, especially if these are signed properly.

Additional context

Some programs provide utilities to automatically add themselves to the Windows Defender exclusion lists and tamper with the antivirus's settings. This feels wrong and makes the Java ecosystem on Windows less secure.

Improve Visual Studio (not Code) support for Java

Another thing that would help would be bringing the Java development experience to Visual Studio as well.

There is some support in Code, but not everyone likes to use Electron based applications and Visual Studio already has some support due to Android workloads, it would be great to improve it further.

Improve filesystem performance creating files

Summary

NTFS is horrendously slow compared with ext4 when creating lots of small files. This makes many things slower on Windows when compared to Linux.

Basic example

Unzip a zip/jar/war file on Windows compared to Linux. On Linux it is almost instantaneous, whereas in Windows it takes (depending on the jar) a long time.
For example this makes integration testing where test setup is a zip/jars that need to be extracted to temp directory much slower when testing on Windows.

Motivation

Improves overall development / testing experience and can make developers more productive.

Expected outcome is extracting large archives with many files is much more performant

Support named pipe servers

Summary

Allow java to implement „forking“ named pipe servers which can accept multiple clients at the same time and optionally also access peer credentials.

Basic example

Implement servers like for example ssh keyagents in java.

Motivation

OpenJDK did gain some support for unix domain sockets, but the commonly used named pipes require a shim - at least for the server side.

Add native support in JDWP for debugging lambda expressions

Summary

Today there is no support for debugging lambda expressions using JDWP efficiently. The current support only capable of putting a line breakpoint where the jvm is suspended on each lambda expression in that line. But if the developer want to suspend only on certain lambda expression they have to make the lambda expression a lambda block which spans multiple lines.

Such example scenarios is debugging a stream operation such as
Stream.of(args).filer(s -> s.length() > 1).map(s -> s.trim()).collect(toList())
Some IDEs add method breakpoint after looking at synthetic methods that are generated for lambda expressions at compile time.

Motivation

This enhancement will enable IDE developers to add breakpoints to lambda expressions without depending on how different compilers generate synthetic methods for lambda expressions. This make debugging lambda statement reliable in most of Java IDEs which will support full JDWP.

Include java in visual studio 2019

We ask you to include Java within the visual studio 2019 to enable Java programmers to use the features of this IDE to develop applications. Thank you.

Better GraalVM native image geration support

Summary

Right now is very difficult to use the native-image tool on windows systems(you need to manually install Microsoft Visual C++ (MSVC) and it is difficult to find the right version based on jdk level and windows version). In addition to this on Windows the native-image tool only works when it is executed from the x64 Native Tools Command Prompt.

Basic example

As a Basic example you can think of any java project that has all the graalVM native image prerequisites(there are also several micro-framework that have graalVM support out of the box: micronaut, quarkus and even spring in the last versions is moving towards graalVM support).

Motivation

this feature will allow developers to build native executable for windows system, starting from java project built with graalVM(the first examples that comes to my mind are cli applications or even graphical applications and microservices). Native image generated applications are really interesting if you think about the cloud landscape and it's requirements.

Thanks

Deliver UWP support

Summary

To make a Java application a first class citizen consider adding UWP support

Motivation

The ability to deliver Java applications beyond the traditionally supported platforms

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.