Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I'm looking into the use of Java/.NET interoperability tools such as IKVM and JNBridge to allow a .NET client to run a Java-based program. Do these and similar tools tend to cause the program to run more slowly or with greater memory overhead, relative to a simple .NET implementation of the client? Are there any other serious advantages or disadvantages of any or all of the tools that I should be aware of (security, bugginess, whatnot)? Thanks.
[Note: I'm with JNBridge.]
We generally don't publish benchmarking information, as we encourage prospective users to try the product themselves. Also, different users have different requirements and run on different platforms, so our internal benchmarks likely wouldn't be relevant.
That said, there is some overhead in the cross-platform calls relating to marshalling and unmarshalling arguments and return values, and to network overhead (when socket-based tcp/binary communications is used -- shared memory communications, which runs the .NET and Java in the same process, has no network overhead). We encourage you to run some relevant examples to see how JNBridgePro performance works for you.
Regarding your other questions, please feel free to contact us at info # jnbridge dot com, and we would be happy to provide you with additional information. There are also customer case studies on our site, which will give you some idea of the scenarios in which JNBridgePro has been successfully used.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
So I'm currently reading the "Java A Beginners Guide 7th Edition" book. And the following sentences seemed to me that Applets could be used as virusis. Was this done?
An Applet is a special kind of Java program that is designed to be transmitted over the Internet and automatically executed inside a Java-compatible web browser.
The key feature of applets is that they execute locally...
To me it sounds like it wouldn't be hard to build in a virus into an Applet.
The problem with applets is that they run automatically when you load the page. They're also so complex (compared to html or javascript) it was just to complicated to be able to meaningfully secure them. Run Automatically + Complicated to Secure + Doesn't Update Automatically = impossible to completely secure.
Regular apps are far far more dangerous to your machine than applets were. But, they don't run automatically when you visit a web page.
Desktop apps written in languages (like C or C++) where you manipulate the memory with pointers and don't automatically bounds check arrays, are much harder to write securely. Languages (like Java or C#) that don't have pointers and do automatically bounds check arrays are easier to write secure apps in.
Java includes many safewards to prevent any ill behavior, but time after time, those security features were not enough because of different bugs or design problems.
As standalone apps they are as safe or risky as any other app. Just make sure to download your app from trusted sources.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I have a Windows service written by another developer who no longer works with me. It was written in C# with .NET 4.5 requirements. Our solution is making the move to Linux and the daemon naturally needs to be converted.
My dilemma is what to rewrite it in? C++ or Java? The daemon is not complicated. It's simply a controller for our other applications to ensure if they crash or are killed they are restarted. Aside from that it performs health checks through a named pipe and is controlled via a password protected web socket via a separate management Tomcat web interface and writes all of it to logs.
Please put aside any suggestions of "write in what you're most comfortable with" I have a fair amount of experience and knowledge in both languages, and I'll learn whatever else I need to as I go. My concern is the feasibility and effort to accomplish everything I need. I don't have any particular time constraints, but if one language is a fraction of the time of the other then maybe that's a better solution.
Writing it in Java looks like the easiest solution currently, but writing it in C++ has the advantage of being native no-frills code. However, I haven't ever written any web interface or socket code in C++ before, so I do not know the effort involved with that.
To break down my requirements:
Linux
Web interface for control
Named pipe for communicating with client applications
Existing code needs to be heavily refactored
Is C++ or Java more appropriate?
Edit: added more info
Edit2: I guess I should have mentioned that the code needs to be heavily refactored anyways. It was originally written in such a way that renders it difficult to make changes and additions. So rewriting is a cleaner solution at this point. As I mentioned, it's not a large program. Just a controller service.
Porting the solution to .Net Core may the way to go. It will run on Linux (and Mac for all intents and purposes...) and most of your codebase may need minimal refactoring. The only concern is if .Net Core currently has the features you would need supported in the app. And, .Net Core is still in preview.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am tasked with coding up an enterprise level eCommerce setup. I know PHP, C#, VB.NET, C++.
I have reviewed a variety of benchmarks in respect to speed performance online and obviously the results are as expected, C++ hands down, C# and Java close enough its immaterial and PHP a strong last place.
I have been learning Java, not too different from C/C++ after all.
I have viewed some memory usage benchmarks related to both C# (ASP.NET) and Java (operating system stuff aside).
However, everything I have located trends towards the more simple scaler variables and normal "any language" constructs. What I am interested in are memory and even speed performance benchmarks comparing complex objects. Cant seem find a thing that is not biased.
I am not interested in the "I like this better or that better", thats simple preference.
I am interested in more concrete data as throughput and memory usage equate to server load and sessions serviced.
Thanks in advance.
If you want to write fast and memory efficient code, then you should just write your code in this way. Software platform overhead is pretty low in Java and in .NET.
.NET JIT compiles code to native instructions, and most JAVA JIT's do the same thing.
I'm sure that benchmarks you reviewed is very synthetic - they just compare time of application cold-start(which is useless metric). Yes, software platforms that use JIT-compilation will lose there - because they need time to analyse and compile bytecode to native. In most situations, you can write applications with same or even better overall performance and memory usage than when using similar C++ code.
Just use language that you(and also your team!) like more.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I am considering using Akka in one of my projects, but I have to use only Java. A majority of the material (books/articles) are on Scala version, so I am wondering if I use Java I would be a second-class citizen.
Are there any significant functional/performance differences between the two?
Thanks
In terms of performance of Akka itself it will be the same since you are going to be running the same Akka byte code. However in terms of integrating you will be using the Java API and be limited to the language features of Java. As such you will be a second-class citizen in terms of using the API. However in functional and performance terms it will be pretty much identical. Just keep in mind that your Java code will be interacting with the library differently from Scala code. With Scala you have access to closure and other constructs that you cant use with Java (yet). Nevertheless Akka is a great library also when used from Java....
I think the main web site page on Akka sums it all: 11 lines of Scala, 17 lines of Java (+50%).
No or negligible performance difference (bytecode, JVM,...). The performance issues will be around what you write on top of Akka.
Significant functional performance (not in terms of possibilities but code clarity... and clarity has a direct relationship to bugs and fixing them)
Between the two implementations, there are no differences in terms of performance and functionality. If your formation is Java then Akka can be a good solution to introduce the actor model in your Java projects. Clearly with Scala would have the advantages that the whole expressiveness of the language offers.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
can someone pleas tell a few good alternatives to corba.
If you need support for more than a language Thrift could be a good solution. It is widely used at Facebook.
As per: https://cajo.dev.java.net/
The cajo project is a small, 100% Free library, enabling powerful dynamic multi-machine coöperation; both within and between, both free and proprietary Java applications. It is a surprisingly easy to use, yet completely understandable framework, unmatched in performance. It is actively being deployed in Java EE, SE, and ME environments all over the world. It is a uniquely 'drop-in' distributed computing framework: meaning it imposes no structural requirements on your applications, nor source changes. It allows multiple remote JVMs to work together seamlessly, as one.