Hacker News new | past | comments | ask | show | jobs | submit login

> I want a powerful tool to help me edit code...

Then why would you use Intellij and not vim/emacs?




I honestly mean this with no disrespect but having written code exclusively in vim in the terminal for several years and the same in IntelliJ, I am confident that either: - you don't have to write Java full time, and/or - you don't have to work in a large Java code base, and/or - you haven't been exposed to IntelliJ's features and how they can save you time

I love vim, I really do, but IntelliJ is a Java-specific IDE and there is absolutely no way that vim or emacs or vscode can compete on features. You can refactor code in a split second in ways that are just not possible in vim/emacs. IntelliJ has an understand of the structure of your Java code that vim simply doesn't have and will never catch up to having as its a general purpose tool and IntelliJ is a specific tool. Its vim mode is also pretty good. The only downside of Jetbrains IDEs is that they can be slow when indexing large projects and they can be slow in general. But I would still 10 times out of 10 choose to make a commit in IntelliJ over vim for a Java project that is non-trivial.

If you write Java I would (as strongly as possible) recommend giving IntelliJ another go and looking into its refactoring and other features.


This thread is about a course on Advanced Programming in the Unix Environment. After looking at the content of the course, I'd argue that there's an implied "Systems" between "Advanced" and "Programming". (Indeed, this course is taught using the famous book whose title it borrows, and is heavily C oriented.)

Java is neither common nor especially well suited for the topic of this course.

So while I share your opinion on IntelliJ as a Java IDE, I would not recommend it for UNIX systems programming. And even the IntelliJ-derived Clion, which is (IMO) decent for that, leaves something to be desired when it comes to learning the topic.


The necessity of intellij just shows how much Javas type system is abused. I don’t know what it is about java but you see the craziest types in codebases: IAbstractBeanFactoryResolverInjector<IDisplayableAppletResolverInjector>


Is that the type system's fault or the whole Spring/dependency injection fault? You're using a typed language and making it behave in dynamic ways when using Spring (at least that's the impression I had when I looked at Spring).


Please educate me - since I feel like writing Java without IntelliJ is like riding a bike without wheels, what does emacs/vim do better?


Tbf I’m a heavy vim user but I’d still 100% use IntelliJ to write Java. It’s different to most other languages in its verbosity, and the fact that (imo) it doesn’t slot nicely into Unix conventions in general.


One would think Sun understood what UNIX was about.


Sun never really integrated Java into its UNIX environment very well, IMO. My memory of that time is spotty but I don’t recall any of their UNIX tools actually being written in it. (Likely because the startup time is awful, which is bad news for any CLI programs which need to execute and finish quickly.) The Java way of doing things and the UNIX way of doing things are worlds apart. UNIX prefers small executables that do simple tasks, mostly with text, tied together with scripts, where Java (at least at the time) preferred pure-Java libraries assembled into larger applications with graphical interfaces. Sun never seemed to square that circle, and Java felt like a second-class citizen on Solaris.


Forte IDE was written in Java, the IDE used for Solaris development.

There was a research implementation to write Solaris drivers in Java.

https://dl.acm.org/doi/10.1145/1215995.1215998

The Sun network computing thin clients had plenty of Java into them.

The classical UNIX does one thing well myth was hardly followed by all major UNIX vendors.


I mean sure, IDE’s are an obvious choice for Java. But the rest of the usages of Java in SunOS I would consider token at best.

One thing I never understood was why I couldn’t just write some Java, compile it [0], and hand the result to someone else on a Solaris system, and have them run it.

Sure, they may know how to run “java -jar myapp.jar”, but why was that necessary? Why couldn’t it be a standalone executable, that didn’t require the end user to know in advance that it was written in Java and to invoke it accordingly?

Every single bit of Java software I ever used on Solaris always had some sort of shell script wrapping it. I never understood why the operating system couldn’t just natively execute Java code… they literally wrote the entire operating system, language, compiler, toolchain, etc, and the end result wasn’t usable without arcane wrapper scripts and JAVA_HOME conventions and so forth. Windows managed to make it work with .NET (they were just .exe’s like everything else), I always thought like Sun could have done so much better with the end-user experience with running Java software.

[0] for any loose, reasonable definition of “compile”. I’m not saying it can’t be byte code, that’s fine… I just don’t want to have to care. I should be able to copy it to /usr/bin and just run it without having to invoke “java -jar”, or use some weird self-extracting shell script trick. And I shouldn’t have to care about whether the person I’m distributing it to has Java installed, because it should have always been the case that a given SunOS machine should have a working Java install… the same company made the OS and the language for chrissakes, every SunOS installation should have had it as a mandatory component.


One might hope, but they didn't. How do you tell in Java if stderr is a TTY, and if so, what its width is? How do you do an NSS passwd lookup (as in getpwnam("pjmlp") in C etc.)?

(To be fair, these could be defended, very slightly, on the grounds that Java is a cross-platform language, even though other cross-platform languages have better answers. But then I'd raise the point about Java corrupting RLIMIT_FILES for processes it starts....)


The same way you can tell in Limbo, and its authors did know one or two things about UNIX and its evolution, although this might be considered moving goalposts. :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: