26 ms·
A Picture of Java in 2020
- klemola 6y agoThe prevalence of Spring(Boot) is insane. Talk about freedom of choice!
- Traubenfuchs 6y agoIt's just that pleasant to use, has a very mature ecosystem and a very helpful community.
- lmm 6y agoNah, it's the PHP of the Java world: easy to spin up something quick with, but impossible to maintain.
- Traubenfuchs 6y agoIf there is no both WORTH to maintain and hard to maintain code in your language of choice, it's because that language of choice was not used to solve the type of problem Java is used for... In this current post monolith, micro-service world, most java applications remain very maintainable though.
- lmm 6y agoActually my language of choice has been used mostly as a Java replacement. And while there is no perfectly maintainable language, little else is remotely close to the awfulness of trying to maintain a Spring Boot application.
- nurgasemetey 6y agoFor me, node js projects are not difficult to maintain. Who is right at the end?
- int_19h 6y agoThat's certainly not true of Spring MVC, and yet it's also very popular.
- jto1218 6y agoWhat are you talking about? What exactly makes Spring projects unmaintainable? Have you ever seen or used it before?
- lmm 6y agoSpring boot specifically; regular Spring is relatively ok. I'm using it professionally at the moment. It's just impossible to find where anything is coming from or understand how your application is wired up, because everything magically appears based on what's on the classpath - it's like the COME FROM statement joke. Even just changing your dependency versions can suddenly radically change your application's behaviour (e.g. now it's suddenly running a webserver).
- jto1218 6y agoThat is true, there's a lot of "magic" that comes with boot. It can be helpful to take a look at what all of that auto-configuration code is actually doing, but reading that stuff is pretty difficult as well.
- lmm 6y ago> It can be helpful to take a look at what all of that auto-configuration code is actually doing You can't tell by reading it either, because it's all dynamic: all of the autoconfigurations create beans conditionally only if other beans of that type aren't defined, if certain classes are present on the classpath, if particular values are defined in the configuration that's written in magical self-transforming YAML, or all three. The only way I've found is to breakpoint at the point where something is wired in to see what the concrete class is, then breakpoint again in the constructor of that class to find where it's being constructed from, so you have to restart your application and run the (slow) spring boot startup twice for each thing you care about. And even that doesn't always work because spring encourages doing AOP with bytecode-manipulation-based proxies.
- a_imho 6y agoI don't understand why is it better to have something wired up by annotations than explicitly writing java code. Is 'new' obsolete? At least tools (including IDE) can look for method calls, annotation strings not so much. I'm completely baffled by the popularity of Spring.
- fetbaffe 6y ago> Laravel of the Java world Fixed it for you.
- vbsteven 6y agoNobody forces you to use it, there are a lot of alternatives out there. But I have to admit that Spring Boot combined with Kotlin is the most productive development environment I have ever worked in. I am not surprised it is so popular among Java devs.
- selfhoster11 6y ago> Nobody forces you to use it, there are a lot of alternatives out there. That assumes you're starting a greenfield development. If you're joining existing companies with a mature tech stack, you won't be able to unseat their existing choices because there's a lot of risk involved.
- sigzero 6y agoThat's just how it works period. Regardless of what software stack you use.
- Cthulhu_ 6y agoPlenty of freedom, it's just that Spring is a good framework and has been since it came out. It was used in one of the first big projects I did and it helped me become a better developer.
- tannhaeuser 6y agoI'm not much of a Spring fan (overengineering) but that's how a mature stack looks like. There were plenty alternatives 10-20 years ago. What's a bit more surprising IMO is the prevalence of Spring MVC in 2020 which doesn't mix well with modern JS-centric frontend approaches, just as splitting frontend and backend work between JS and Java is flying in the face of agile job rotation.
- ahpearce 6y agoI'm not sure why they separated them. Spring is Spring imo. There's a lot of tooling that is very quickly accessible and "just works". We have 15 microservices and three or four UIs that are all Spring backend with React frontends and it isn't even a little cumbersome. We don't serve the static content from Spring as a webserver though (we use a separate nginx instance).
- johnnycerberus 6y agoWe haven't used Spring MVC since 2015, all our services are running Spring Boot because it is the most mature solution on the market to create the webservice layer. Our Spring apps are then containerized and optimized with jib[1]. Our frontend is built on React Hooks + TypeScript, fully SPA. All the work nowadays in our company is focused on data engineering, by that I mean: databases, parsers, managing the data pipelines, orchestration, Python for creating the models and Java for inference in production, our teams consist of data scientists that are using Python and software engineers that are using Java and TypeScript. I don't understand why people consider Spring to be overengineered. We find it very productive, time to market is huge and we can focus on other parts of development instead of reinventing the wheel. We are also considering Quarkus for some of our services that aren't supposed to run for a long time. [1] https://github.com/GoogleContainerTools/jib https://github.com/GoogleContainerTools/jib
- pjmlp 6y agoI am still doing JEE when Java Web projects come around.
- vbezhenar 6y agoRaw servlets and JSP is surprisingly nice when a little bit of server rendering is required. war-file is tiny and functionality is adequate.
- kitd 6y agoVSCode is growing which is concerning, not from a competitive point of view but actually from the point of view that there is clearly a lack of understanding of what an IDE gives you. VSCode is a code editor with some features that you’d find in an IDE, and extensions that can provide additional functionality – so if people are turning to VSCode for developing it may imply that developers don’t know what a fully-featured IDE can give them. In the web space it is understandable to use an editor as web developers are typically working with dynamic languages, and often use other tools like browser plugins to give them what they need.. But in Java, especially professional Java, you really get a lot out of a good tool that has integration with the application server and you can really use the analysis and refactoring and everything. IME a lot of developers don't like their IDE heavily coupled to backend servers and environments, but actually prefer the "code editor + useful features" approach. It makes combining with CI/CD a lot simpler for one, since the activities run on a project can simply be the same as those run on the pipeline. A quick "mvn install" is often enough for many/most modules. Many devs only really want advanced editing + syntax highlighting + language server.
- rapsey 6y agoJava people always tout their advanced IDEs as a major benefit of working in Java. But the thing is that Java is a language that is unusable without a strong IDE and that is not an advantage.
- Traubenfuchs 6y ago"Needing an IDE" certainly isn't an advantage, but framing it as a disadvantage is luddite thinking.
- rapsey 6y agoOne should always strive to use the simplest tool that gets the job done. Java comes with an insane stack by default. Not only must you understand all those parts (the vm and IDE), you must have a strong enough computer to work with it. Java developers always need the beefiest most expensive machines to work.
- Traubenfuchs 6y ago"Vendor of a product afraid of competing, free product." Come on, IntelliJ. You are still THE standard in Java development and it's on you to keep that first place. Those "opinins" on Visual Studio Code are ridiculous... This really makes me want to try out Visual Studio Code for Java.
- pjmlp 6y agoVisual Studio Code for Java is developed by Microsoft alongside Red-Hat, you should have a look.
- saiya-jin 6y agoare there any benefits using it compared to open source eclipse with plugins?
- pjmlp 6y agoDepends on the workflow, it is more tailored to Web APIs and headless/CLI coding, as it doesn't support graphical tooling.
- snazz 6y agoVS Code has far more sensible defaults than Eclipse, in my opinion. If you enjoy using Eclipse, then by all means continue.
- xtracto 6y agoI havent used Eclipse in like 8 years, but if it is as slow and clunky as it was before then for sure VSCode is better. I remember trying both Netbeans and Eclipse. Both were nice but very slow. Nowadays I sometimes use programs based on eclipse (birt or xmind) and God they make me happy that I'm not doing java dec on Eclipse.
- marcosdumay 6y agoIt's not slow anymore, it's mostly as heavyweight as it always was, what means it's a lightish application nowadays. Clunky can mean several things, and I don't think Eclipse changed in any of them since early 00's. If you consider it an specialized IDE (that means you'll download a full one for each kind of development, prepackaged), and disposable (non-upgradable, you'll download the next version and delete the current one), Eclipse is quite ok for many kinds of development (even some you do with Java).
- dragonwriter 6y ago> so if people are turning to VSCode for developing it may imply that developers don’t know what a fully-featured IDE can give them. I think the author doesn't know what VSCode can deliver. > In the web space it is understandable to use an editor as web developers are typically working with dynamic languages So? Most popular dynamic languages have optional static typecheckers, and the VSCode ecosystem has extensions that leverage these to provide many features common in IDEs for statically typed languages. Of course, the VSCode ecosystem also does this for already-statically typed languages. > But in Java, especially professional Java, you really get a lot out of a good tool that has integration with the application server and you can really use the analysis and refactoring and everything. “Analysis and refactoring and everything” isn't something VSCode overlooked developers interest in, and application server integrations are also part of the VSCode ecosystem.
- philjohn 6y agoHaving used both VSCode and IntelliJ in anger - VSCode is nice, but the refactoring and other features in IntelliJ blow it out of the water (IMHO).
- t-writescode 6y agoAnd for test passes, debugging, code coverage analysis, performance testing results analysis, etc.
- insertnickname 6y ago>I think the author doesn't know what VSCode can deliver. Can it Inline Variables yet?
- akaroml 6y agoYes it surely can. Just right click on the variable and pick "Refactor..." And you'll find other refactoring options as well, e.g. rename, extract...
- 6y ago
- avolcano 6y agoMy takeaway from this is "I should probably bite the bullet and learn about Spring Boot." I started writing server-side Kotlin about a year ago and find the JVM ecosystem mostly really nice (leagues better than the Node/TypeScript world I escaped from - as much I still like writing TS on the frontend, server-side TS is still too immature to recommend), but I could not wrap my head around Spring/Boot. My understanding is that Spring Boot wraps a bunch of the same libraries used in Spring MVC into an easier to comprehend package, but it still seemed like a very intimidating ecosystem. I went ahead and used Javalin, which I'm a little bummed to not see represented on the survey - it's meant as a successor to Spark (which I haven't used), and I really like it. It uses similar patterns to Koa/Express in Node, which made it easy to understand. The big downside of not using an integrated ecosystem like Spring Boot, of course, is more glue code, but I actually haven't found it _that_ bad.
- murukesh_s 6y ago>TS is still too immature to recommend care to explain? I don't think TS is immature, but whether it's true or not, Java is still used by 90% of the enterprises. I am amazed why Node.js (TS in server) could not yet challenge Java, especially in large enterprise systems.
- mxschumacher 6y agobecause enterprises run huge and old systems performing critical functions, these systems get modified around the edges (small extensions, bugfixes, performance tuning), not completely re-written. To justify switching the stack (at gigantic expense in training and engineering), a vastly superior technology would have to present itself. I don't think switching from Java to Node would make a big difference for the bottom line.
- anon73044 6y ago>because enterprises run huge and old systems performing critical functions, these systems get modified around the edges (small extensions, bugfixes, performance tuning), not completely re-written. Not every enterprise runs a single huge monolithic app or codebase.
- Benneb 6y agoI see that JetBrains is again pretending that Taiwan doesn't exist in the analytics of its survey results. In prior year's survey you can still get at this demographic data in the raw results that they released, we'll see if it's the same for this year.
- mxschumacher 6y agowhile this is unfortunate I think it is understandable. Why would they risk offending the Chinese government and risk getting blocked? It's not Jetbrains' responsibility to resolve these geopolitical tensions
- mabbo 6y ago> It's not Jetbrains' responsibility to resolve these geopolitical tensions It's everyone's responsibility to stand up against tyranny, for ethics. Saying it's not your problem because you'd lose money if you did the ethical thing doesn't absolve you- it makes you just as bad. I'm reminded of the small and rather racist town I grew up in. I heard someone say once "I have no problem with <race>, but I couldn't possibly hire one of them because too many of my customers would get upset". They weren't racist, but they'd cater to racists because it was financially better for them. Oh, I'll do the right thing, unless it costs me a penny.
- Quarrelsome 6y ago> Oh, I'll do the right thing, unless it costs me a penny. There are so very few people that fit that criteria of doing the right thing even if it costs them. As an example: its the reason we kid ourselves into thinking we care about global warming while driving cars into supermarkets for shopping. Sure, we'll protest but that costs us just an afternoon and acts as guilt-offset as opposed to giving up habits that bring us great convenience but do significant environmental damage like supermarkets and cars. So its the same here, there is barely _anyone_ who would give up something _real_ for Taiwan so IMO its a bit harsh to expect Jetbrains to give up something when we ourselves probably have very little to lose. Now if we were speaking from a position of a company that did have something to lose, _that_ would be something.
- iamericfletcher 6y agoI suppose I should put my GitHub Student Developer Pack to good use and get started learning JavaScript!
- speedgoose 6y agoBe careful, you may like modern Javascript.
- foolofatom 6y agoThe two biggest problems I've had with Intellij IDEA for Java: 1. It's too memory hungry for a project that uses microservices. 2. Lack of official support for OSGi & bndtools (although it looks like almost no one else is using it based on their data).
- eternalban 6y agoIf you are doing OSGi, Eclipse is the logical and optimal choice. Personally I have yet to see an OSGi project in my professional (US) work, but do see a lot of French (Sr.) devs with OSGi on their resume.
- foolofatom 6y agoYeah. I did end up using Eclipse w/ bndtools. The amdatu project for Intellij is pretty neat too.
- jillesvangurp 6y agoI find it funny how they carefully avoid mentioning Kotlin in the article. Especially considering that it is popular and that they created it. I guess they did not want to be party-poopers on Java's birthday ;-). Basically, Spring + Kotlin is a great combination currently. Spring has first class support for Kotlin and it arguably makes a lot of things easier. E.g. async io with Flows instead of Spring Flux is a lot nicer. I've done several projects with that in the last few years. The Spring people have done a lot of good work in recent years of making it work seamlessly with kotlin. E.g. their flux stuff is a bit clunky but interoperates nicely with Kotlin's co-routines and flows, so you mostly don't have to deal with it. Also on Android, basically most projects are Kotlin at this point.
- pjmlp 6y agoBecause they are aware that UNIX == JVM and Java has the same ownership role as C has on UNIX. Android is going Kotlin because Google needs a way out of the mess they themselves created. It is quite telling that they purposely always compare Kotlin to Java 7 code samples.
- pron 6y agoBut Android isn't Java, and Kotlin's penetration on the Java platform is ~2-4% and no greater than Scala's (or not much greater, and certainly no bigger than Scala's at its peak). It's a great achievement for an "alternative" Java-platform language compared to others -- and because Java (the platform) is so big, this translates to a respectable number people compared to many other languages, especially when you add the Kotlin-on-Android people to the Kotlin-on-Java people -- but let's not get carried away.
- coldtea 6y ago>VSCode is growing which is concerning, not from a competitive point of view but actually from the point of view that there is clearly a lack of understanding of what an IDE gives you. VSCode is a code editor with some features that you’d find in an IDE, and extensions that can provide additional functionality – so if people are turning to VSCode for developing it may imply that developers don’t know what a fully-featured IDE can give them. I've found that VSCode can trivially be expanded to be more fully-featured than any IDE I've used -- includiding Eclipse, Idea and XCode. It's not even the difficult kind of trying to make Vim or ST or even Emacs an "IDE-like" editor with a mismatch of third party plugins of varying quality and integration. VSC has a few first-class, officially-supported (e.g. MS) plugins that immediately give you nearly all IDE superpowers (inline debugging, intellisense, build environments, git, remote development, testing, etc) with very tight integration. In fact VSC is so well designed for extensibility / plugin integration, that even third party plugins feel native and integrated to the UI/experience. Despite it's origins as the Monaco editor or Visual Studio's "little cousin", it's more of a "a la cart IDE" today than a text editor + some plugins. I'm not an Electron fan, but VSC is a great app.
- pjmlp 6y agoExcept for stuff like RAD tooling for native apps.
- coldtea 6y agoYeah, but nobody, statistically speaking of course, cares for those today :-) For most devs, and especially HN-mingling devs, it's either system work, embedded work, ML/AI/Data Science, backend work, html/js frontend, or Electron -- and as for native apps, most focus on iOS or Android (rather than desktop native). Somehow RAD native apps became the forgotten stepchild.
- pjmlp 6y agoStrange and me thinking that one of the selling points of Android Studio and XCode was RAD support for mobile native apps. Try to do iOS storyboards by hand in a text editor loved by the HN UNIX crowd.
- bullen 6y agoIf you want to move away from the servlet spec. with all the limitations it's implementations have and take control over the foundation of your projects; I made a app server and distributed database that fits in a 166KB .jar unobfuscated: https://github.com/tinspin/rupy https://github.com/tinspin/rupy
- eternalban 6y agoOk, I'll bite. What are "all the limitations" of the Servlet spec? Let's start with this: https://github.com/tinspin/rupy/blob/master/src/se/rupy/http/Service.java https://github.com/tinspin/rupy/blob/master/src/se/rupy/http... How is the abstract class of yours less limited?
- bullen 6y agoAlready back in 2003, Greg Wilkins, the author of the Jetty Web container and contributor to the Servlet specifications, blogged about some issues with Servlets: - No clear separation between the protocol concerns and the application concerns. - Unable to take full advantage of the non-blocking NIO due to blocking IO assumptions. - Full Servlet Web containers are overkill for many applications. My design fixes all of them and adds many features: - It has classloader hot-deploy, which means you can replace the implementation while people are requesting things from the server for zero turnaround development over HTTP distributed across continents securely. - It uses non-blocking sockets, concurrent lock-free data and async. network implementations to allow for joint parallel scaling (many threads accessing the same memory). - It implements "transfer-encoding: chunked" to allow real-time server -> client messages without over-engineering. - It has a distributed JSON file database hosted on-top-of HTTP so it can scale. To answer your question specifically: The Service.java is similar, but Event.java and Reply.java are different as they allow hold() and wakeup() for NIO concurrent async. features!
- deleted 6y ago[deleted]
- eternalban 6y ago
- sahinyanlik 6y agoI don't think it is possible for 72% Java Developers to pay for IDE. Maybe just developers who uses jetbrains answers these serveys. While reading survey need to consider that as well.
- badsectoracula 6y agoThere is a free and open source version of IDEA so many people might be using that.
- t-writescode 6y agoAlso, Eclipse and Netbeans are free
- jto1218 6y agoInteresting to see that fragmentation in versions being used. I guess that’s to be expected with a faster release cycle. 75% still on Java 8 is surprising though, isn’t it already EOL?
- vbezhenar 6y agoNo, Java 8 is not EOL. For example Azul will provide updates for Java 8 until Dec, 2030.
- pron 6y ago> On top of this, Oracle introduced bi-yearly releases, and so not all releases are supported for a long time so Java 9, Java 10, Java 12, and Java 13 are only supported for 6 months, which is probably why they all have such a very small number of users. Java feature releases have always been supported for 6 months. 7u4, the feature release that introduced G1, was supported for 6 months; 7u6, the feature release that introduced JavaFX and support for Linux on Arm was supported for 6 months; 7u40, the feature release that introduced Java Flight Recorder and Mission Control was supported for 6 months; 8u40, that introduced AppCDS and support for Mac OS was supported for 6 months. What seemed to be supported for more than six months were the major releases that these big feature releases were considered to "support" (which, back then, were called "limited updates" to the major release). What's changed is that major releases are gone. If you want to think about it using old terminology, all feature releases are now part of the "support" for the last major release -- 9 -- which is supported for all eternity or as long as Java lasts, whichever comes first. The fact that after major releases were abolished, the feature releases were given new names has certainly had a big psychological effect, but I think the main issue is that many companies are severely overestimating the cost of the one last major upgrade past 8, and severely underestimating the monetary gains in hardware/hosting due to the lower footprint and higher performance of new versions.
- cesarb 6y agoYour vision of the Java version numbers seems different from the way all developers I know see the Java version numbers. It doesn't matter that minor releases within Java 7 or Java 8 introduced new features. What matters is compatibility. If your code ran on a given Java 7 release, it would work unchanged on all later Java 7 releases; the same for Java 8. The same pattern still applies for later Java versions; if your code ran on a given Java 9 release, it should work unchanged on all later Java 9 releases, but not necessarily on Java 10 or Java 11 (this is not a theoretical concern, I've seen it happen in practice). > but I think the main issue is that many companies are severely overestimating the cost of the one last major upgrade past 8 I worked on upgrading one large codebase from Java 8 to also compile and run on Java 9 and Java 11 (making it run on Java 9 is a good first step to making things run on Java 11, but it's not enough; there are important breaking changes on Java 11), so I have a good idea of the costs. It's not just the compiler being slightly more strict with generics and a new class in java.lang conflicting with a wildcard import, which are very easy to fix, or the whole system failing to initialize when ran on the Java 9 or Java 11 JVM, which is annoying but hard to miss; it's also less used parts of the system failing to work when it's on a Java 9 or Java 11 JVM, many months later. You not only have to upgrade your code (and hope your QA and unit tests caught all relevant cases) for the new Java version, but you also have to upgrade all your dependencies, recursively (and hope they didn't introduce any compatibility breaks themselves), and sometimes even introduce new dependencies (especially for Java 11). As late as this year, I was still seeing open source libraries releasing compatibility updates for Java 9 and/or Java 11.
- Archer_Software 6y agoIt was very surprising to see such a low number of Java users in different countries.
- kulig 6y agoLmao. Who the f can develop java with vscode? Maybe a toy project or something
- humbleMouse 6y agoI dont know what all this fuss is about. Intellij is great, no need to use all the extra features. If your application wont run by typing java -jar myjar.jar, you have bigger problems than what type of IDE you're using.
- bubbleRefuge 6y agoMy Gosh! I still use eclipse with the vrapper which puts me at 7%. Guess I need to give Idea another try.
- kleiba 6y agoThe funny thing is, I actually really enjoyed java in the early days. Before it went all "enterprisey" with FactoryFactory over-engineering, XML, annotations and all the other crap. I mean, how is that stuff fun?
- robotnikman 6y agoSimpleBeanFactoryAwareAspectInstanceFactory
- commandlinefan 6y agoSimpleBeanFactoryAwareAspectInstanceFactoryImpl implements SimpleBeanFactoryAwareAspectInstanceFactory
- vbezhenar 6y agoYou're not obliged to overengineer you code, use XML or annotations. Well, annotations are too prevalent, so not sure about those, but you definitely can limit their use to absolute minimum. There are plenty of libraries with different approaches. Many people don't like magic code which auto-discovers everything, so there are many libraries where you have to be explicit. And modern Java with lambdas often very helpful for such APIs. I suggest you not to follow the mob and think critically about libraries you're going to pick up or the way you're going to use them. For example Spring can be magic, but you have an option to make it very explicit.
- kleiba 6y agoIn all fairness, I do like some of the more recent additions to the core language. And I still write the occasional Java program even today - when I do, I certainly do it the way you describe, ignoring all the cruft. But there's not doubt about the fact that mainstream Java has taken a wrong turn at some point.
- vbezhenar 6y agoAll those abstract factories originated in the Gang of Four patterns book. And this book was written with C++ examples. So I'm not sure that it's a Java to blame. More like general approach of software development at that time and Java happened to be the most popular language at that time as well.
- jahewson 6y agoPersonally I prefer to use languages that don't require refactoring tools to make them bearable - but in my experience back in the day with Java, most IDE users didn't know what 99% of the functionality was for anyway.
- t-writescode 6y agoI'm not good enough to write my code in a way that won't need changing at least a couple-few times over a 5 year or 10 year period. I'm grateful for refactoring tools.
- deleted 6y ago[deleted]
- krisgenre 6y agoI was quite amazed by IntelliJ's refactoring capabilities just few days back. I had code like below switch(sort) { case "asc": sortedComments = topicComments .stream().map(Comment::getThreadComments).filter(Objects::nonNull).flatMap(Collection::stream) .sorted(Comparator.comparingLong(PostResponse::getCommentPostedTimeMilles)).collect(Collectors.toList()); break; case "desc": sortedComments = topicComments .stream().map(Comment::getThreadComments).filter(Objects::nonNull).flatMap(Collection::stream) .sorted(Comparator.comparingLong(PostResponse::getCommentPostedTimeMilles).reversed()).collect(Collectors.toList()); break; } I selected the first case and applied "Extract to method" and IntelliJ automatically suggested and applied the method to the second case also. Not sure if Eclipse will do that.
- vbezhenar 6y agoSometimes Idea finds duplicated code without your interaction and suggests to extract it into method. I don't always like it, but it's an interesting feature.
- phist_mcgee 6y agoI find sometimes duplicated code is from a business domain quite separate from another, yet intellij wants to bring them together. Sure, one day I will get my shit together on that duplicated code and fix the issue, but sometimes the hassle is not worth the hours put in to refactor. Nice that intellij lets you know though.
- dlandis 6y ago> Still, we don’t deny the information could be a bit skewed – even with the weighting we give to our survey results – given that this is from the JetBrains State of Developer Ecosystem survey, and one of JetBrains main products is IntelliJ IDEA. They claim to have 72% of the market based on their own survey (given to their own users), and eclipse only has 13%. Can't believe they would even bother to publish that.
- notamy 6y agoReading these comments, I feel like a heathen for this opinion, but here goes: I find I prefer Jetbrains IDEs to VSC, massively so. VSC is nice, and I tend to use it as my daily driver, but I experience a host of issues with it that I've never been able to solve. In no particular order: - Autocomplete/Intellisense/whatever-you-call-it just stops working, constantly. This has persisted across many languages: Rust, C, PHP, Elixir, Java, Javascript, Typescript, Scala, ... despite having the relevant extensions installed. It's incredibly frustrating. Reinstalling VSC, disabling all extensions, etc etc etc has made no change. I've found absolutely nothing that indicates what could possibly be the issue, and fixes I've found online haven't helped. I admit I have a habit of leaving VSC open for days on end, but that shouldn't impact anything -- Jetbrains IDEs work reliably for me under the same circumstances. - Performance-wise, I find it slower. Sure, a window opens up fast, but that's about it. I have a few extensions for symbol/token colourisation (think rainbow parens, rainbow do/end in Elixir, ...), since it makes it easier for me to read the code, and I find that these have a giant impact on its performance. Things like smooth scrolling -- which I like -- tend to lag out a lot for me when there's a lot of text in the terminal, even when not coloured or anything. It's not like I'm running this on a low-end machine, either; specs are R7 1800X / GTX 1080 / 64GB, so to me it's absolutely inexcusable that it's this slow. - Unreadable themes are an issue I've run into, tho I understand this isn't a VSC-specific issue. With VSC specifically, I can't find a theme that actually has comments that feel readable to me -- I strongly dislike green comments, and all the themes I've looked at make comments a really low-contrast colour that blends into the editor background. I have neither the time nor the patience to make my own theme (or customise someone else's), so using VSC just becomes frustrating at times because someone thought low-contrast comments were a good idea. - Stuff like jump-to-definition, refactorings, ... are consistently either not-very-functional, or just don't work. Jump-to-definition specifically loves to just give "No definition found" even when the relevant symbol is in the same file. Maybe I'm doing something wrong, I don't know. But I've used VSC for the last ~2 years and it's been consistently far less usable for me than a Jetbrains IDE. VSC feels like I'm using a plain text editor with syntax highlighting, an integrated file browser, and an integrated terminal.
- dkarl 6y agoSimilar experience here. I find IntelliJ autocomplete, syntax highlighting, compilation etc. to be laggy occasionally as well, but I can usually see why and wait for it to finish reindexing or whatever. With VSCode, I don't bother waiting because 1) I often can't visually see why it's not working or when it's ready to work again, and 2) sometimes it's never going to be ready, because something stopped working. I am still actively using both, because I prefer VSCode for Javascript and expect it to eventually catch up for Java and Scala, but I often switch from VSCode to IntelliJ in the middle of a session, never vice-versa.