Security of Java takes a dangerous turn for the worse, experts say (ars technica)
The most visible sign of deterioration are in-the-wild attacks exploiting unpatched vulnerabilities in Java version 6, Christopher Budd, threat communications manager at antivirus provider Trend Micro, wrote in a blog post published Tuesday. The version, which Oracle stopped supporting in February, is still used by about half of the Java user base, he said. Malware developers have responded by reverse engineering security patches issued for Java 7, and using the insights to craft exploits for the older version. Because Java 6 is no longer supported ... those same flaws will never be fixed." See the original blog post for more information.
Posted Sep 12, 2013 2:14 UTC (Thu)
by RCL (guest, #63264)
[Link] (4 responses)
Posted Sep 12, 2013 5:59 UTC (Thu)
by ncm (guest, #165)
[Link] (1 responses)
Posted Sep 13, 2013 18:32 UTC (Fri)
by jonabbey (guest, #2736)
[Link]
Posted Sep 12, 2013 7:09 UTC (Thu)
by jtc (guest, #6246)
[Link] (1 responses)
Does that mean that God is a CPU?
Posted Sep 12, 2013 10:25 UTC (Thu)
by sdalley (subscriber, #18550)
[Link]
Posted Sep 12, 2013 5:20 UTC (Thu)
by eru (subscriber, #2753)
[Link] (45 responses)
If you use it just as a general-purpose programming language, it should be no worse than Python, Ruby and so on, and probably safer than C or C++, in the sense that many kinds of memory usage errors in them are impossible or caught by the run-time system in Java.
I don't remember the last time I needed to use a Java applet on some web page, it seems to me they have been entirely replaced by JavaScript nowadays. Probably just some legacy in-house horrors remain. (There used to be a really ghastly one for working-hour entry at my previous workplace, but even that got replaced by a much more friendly Ruby-on-Rails based system before I left).
Posted Sep 12, 2013 6:14 UTC (Thu)
by bo (guest, #56215)
[Link] (15 responses)
It does however make it very difficult to completely get rid of Java. I, for one, just use it for bankID and nothing else.
Posted Sep 12, 2013 6:22 UTC (Thu)
by smurf (subscriber, #17840)
[Link] (10 responses)
Should not take more than two hours. ;-)
(That being said, the way to find a realistic estimate is to multiply the initial estimate by two and go to the next-higher order of magnitude, so it'd be more like a week.)
Posted Sep 12, 2013 6:57 UTC (Thu)
by geuder (subscriber, #62854)
[Link]
Come on this is about security, so of course the specs must be kept secret
(sorry could not resist... comment not based on specific facts in the case mentioned, but on general experience)
Posted Sep 12, 2013 7:16 UTC (Thu)
by bytelicker (guest, #92320)
[Link] (3 responses)
The answer is not an easy one.
Posted Sep 12, 2013 15:08 UTC (Thu)
by drag (guest, #31333)
[Link] (2 responses)
"There are two ways of constructing a software design; one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."
Therefore if you want to have a secure login or something like that for a bank the goal is to avoid javascript, java, html5, etc etc.. as much as possible. I don't think there is a way to make these sorts of technologies actually secure.
Posted Sep 17, 2013 19:11 UTC (Tue)
by dlang (guest, #313)
[Link] (1 responses)
Posted Sep 17, 2013 19:12 UTC (Tue)
by dlang (guest, #313)
[Link]
Posted Sep 12, 2013 9:01 UTC (Thu)
by ibukanov (subscriber, #3942)
[Link] (4 responses)
Still, given how bad the situation with Java, I would not be surprised that after few successful fraud attempts against big customers, banks change their mind.
Posted Sep 12, 2013 16:54 UTC (Thu)
by pboddie (guest, #50784)
[Link]
The dialogue that gets shown when one has to accept the elevated privileges of the signed applet under certain versions of the Java VM says it all when it tells you that the applet needs access to your system including your webcam. Naturally, the webcam thing is an artefact of Java's "cool" multimedia past, but in this situation it just underlines the creepy nature of a banking login mechanism wanting to poke around on a user's computer.
Posted Sep 12, 2013 22:43 UTC (Thu)
by khim (subscriber, #9252)
[Link]
A few banks already did that and now instead of Java applet offer… regular This looks onerous, but I can kind of understand why they are doing this: my sister is accountant and she sometimes enlist my help in fixing the computers of her fellow accountants. Usually they are infected by literally dozens of viruses and trojans which, of course, makes them somewhat slower. AV software is installed and usually even tries to complain but is silenced “because it's popups make work impossible”. Frankly this picture makes me sad: we are talking about backdoors and weaknesses in cryptographic standards but what does it change if people are this ignorant?
Posted Sep 13, 2013 6:24 UTC (Fri)
by eru (subscriber, #2753)
[Link] (1 responses)
Sounds surprisingly complex, is that really needed?
The Finnish bank I use (Nordea) has used for decades an authentication that can be implemented with a bare HTML form (or with a TTY for that matter, it actually started that way): For login, a userid, and a single-use 4-digit code stored offline (you pick the next one from a piece of paper the bank sends you now and then). Transactions also require a final confirmation code, which is not single-use, but chosen from a set of 18 (the bank sends you a single letter as a challenge, you respond with the corresponding 4-digit code from the aforementioned piece of paper). Pretty low-tech, no applets needed. Most other Finnish banks also use something similar.
I have not yet heard of any attack against this that did not involve social engineering. A few years ago, a phishing mail managed to persuade some people to send their id, the next 10 or so login codes and the confirmation codes (this has always surprised me, because it is a lot of work to enter that much data, one would have expected warning bells to start ringing in the mind of the "mark" around entering the 5. code or so).
Posted Sep 13, 2013 6:50 UTC (Fri)
by ibukanov (subscriber, #3942)
[Link]
It is useless... Successful attacks against Norwegian banks often involved malware that just replaced the HTML on the login page with own form that sends the login credentials to a remote server. There an operator manually enter the login information into own browser window and do the payment. Then, to confirm a payment, they tricked the user to enter an extra credentials claiming a security check.
Posted Sep 12, 2013 7:40 UTC (Thu)
by dottedmag (subscriber, #18590)
[Link] (1 responses)
Posted Sep 12, 2013 9:05 UTC (Thu)
by ibukanov (subscriber, #3942)
[Link]
Posted Sep 13, 2013 10:24 UTC (Fri)
by Lennie (subscriber, #49641)
[Link]
Here is an article from 2008 that described what it was like:
I don't know if it has been solved, but the problem still existed at the end of 2012:
It might even be one of the reasons WebCrypto workgroup exists:
http://www.w3.org/community/webcryptoapi/2012/03/28/a-dra...
Posted Sep 18, 2013 16:14 UTC (Wed)
by Arker (guest, #14205)
[Link]
Posted Sep 12, 2013 6:18 UTC (Thu)
by smurf (subscriber, #17840)
[Link] (16 responses)
For me, coding in Java has been the least productive exercises in programming ever. On par with COBOL ("ADD 1 TO FOO"), I'd say.
Posted Sep 12, 2013 10:37 UTC (Thu)
by the.wrong.christian (guest, #73127)
[Link] (5 responses)
Posted Sep 12, 2013 11:53 UTC (Thu)
by HelloWorld (guest, #56129)
[Link] (4 responses)
Posted Sep 16, 2013 16:51 UTC (Mon)
by ThinkRob (guest, #64513)
[Link] (3 responses)
Posted Sep 16, 2013 22:51 UTC (Mon)
by HelloWorld (guest, #56129)
[Link] (2 responses)
Posted Sep 17, 2013 8:40 UTC (Tue)
by jezuch (subscriber, #52988)
[Link]
Giving an example that is easier does not mean that the original example is not easy.
Now, the *real* problem with the original example is that it's a simple adapter. If the iterator is supposed to do some filtering, then it becomes significantly less easy. That's when I long for yield in Java :) But the upcoming lambda support in Java 8 is supposed to make this much, much easier and effectively eliminate the need for implementing iterators thus making yield insignificant.
Posted Sep 19, 2013 15:27 UTC (Thu)
by ThinkRob (guest, #64513)
[Link]
Yes, C# requires fewer lines. I wasn't playing code golf though; I was responding to the claim that it was hard to write an iterator. It's not. It may not be as few lines as you'd like, but it's not hard -- or at least it shouldn't be for anyone who knows the language well enough to be writing more than Hello World in it.
It's worth noting that C# isn't burdened by the same backwards-compatibility requirements that Java is. There's a *lot* of parts of Java that could be better if they were allowed to introduce breaking changes (the Collections API comes to mind), but that's the curse of being first I suppose.
Posted Sep 12, 2013 21:12 UTC (Thu)
by juhah (subscriber, #32930)
[Link] (8 responses)
That said, Java syntax will still be far from python elegance, in general.
What is perhaps more interesting is JVM, not Java. Go checkout Clojure and Scala if you haven't heard of them yet. And how they all compare:
Posted Sep 13, 2013 18:25 UTC (Fri)
by jonabbey (guest, #2736)
[Link] (7 responses)
For myself, I'd preferentially choose to work with Clojure, but most of my Java work is in Ganymede, an open source network directory management framework, and I don't want to scare away the few people that seem inclined to adopt it by making them grok Lisp.
Posted Sep 16, 2013 23:25 UTC (Mon)
by HelloWorld (guest, #56129)
[Link] (6 responses)
Posted Sep 17, 2013 5:15 UTC (Tue)
by peter-b (guest, #66996)
[Link] (5 responses)
Makes it literally impossible to implement a Scheme on top of the JVM, for example (the Scheme spec *requires* tail call optimization).
Posted Sep 17, 2013 10:34 UTC (Tue)
by eru (subscriber, #2753)
[Link] (3 responses)
Now I'm curious: How can the JVM prevent tail call optimization? After all, it is just a matter of updating the variables that correspond to the parameters of the function, and then executing a goto to its start. And the JVM (being a low level language) has a goto.
Posted Sep 17, 2013 11:50 UTC (Tue)
by peter-b (guest, #66996)
[Link]
http://stackoverflow.com/questions/105834/does-the-jvm-pr...
Don't forget that "true" tail call optimization implies that *any* tail call can be optimized, not just the self-recursion<->loop case.
Posted Sep 17, 2013 12:04 UTC (Tue)
by HelloWorld (guest, #56129)
[Link]
Posted Sep 17, 2013 18:56 UTC (Tue)
by jonabbey (guest, #2736)
[Link]
Without having JVM-level support, though, you do lose some tooling support and flexibility. It would make a very nice addition to the JVM, albeit more work to do than the invokedynamic feature that was added in Java 7 to support dynamic languages on the JVM.
Posted Sep 21, 2013 7:27 UTC (Sat)
by Per_Bothner (subscriber, #7375)
[Link]
Posted Sep 14, 2013 10:25 UTC (Sat)
by alankila (guest, #47141)
[Link]
>>> import subprocess, gzip; subprocess.Popen(args="/bin/ls", stdout=gzip.GzipFile("testfile", "wb")).communicate()
The intent of code is hopefully clear. I should have a gzipped output 'testfile' of the command of /bin/ls. Unfortunately to me, Popen() calls fileno() on GzipFile and steals the handle from it, and writes uncompressed data bracketed by gzip gunk for 0-byte file. So, GzipFile shouldn't implement fileno(), or someone shouldn't play fast and loose with Popen and should rather read from the stdout/stderr pipes during communicate() and use the correct abstraction of file.write to write when a file object is passed in.
At least java's abstractions generally work correctly...
Posted Sep 12, 2013 7:25 UTC (Thu)
by geuder (subscriber, #62854)
[Link] (2 responses)
One of the bigger Finnish banks is just replacing it in their online banking these days (and they got it when they were bought by a Danish bank, so probably they had it, too). The German tax administration has it in their online services. (Although it's only mandatory in Windows XP and it actually blocks old JRE versions so people are forced to upgrade at least a bit). It appears that similar examples are found from many countries, guaranteeing that 100s of millions of users need it. And even if they need it only once a year, most of them will not disable it.
I think most conference systems use it for screen sharing, Big Blue Button, screenleap, webhuddle. (Skype being a positive exception in this respect)
Posted Sep 13, 2013 14:47 UTC (Fri)
by smurf (subscriber, #17840)
[Link] (1 responses)
Happily, for the most common uses this Java thing can be avoided; there is an implementation of the Elster protocol (which for the most part is actually documented(!!!)) which does the same thing in HTML5 and JS, as a Firefox app ("Geierlein").
Aside: "Elster" is supposed to be an acronym. It is also the German name for the magpie, a bird _not_ known for leaving your belongings alone, esp. small shiny valuable ones. It's a mystery how the IT people at the (normally quite humor-challenged) German tax office got away with that.
Posted Sep 18, 2013 12:10 UTC (Wed)
by Arker (guest, #14205)
[Link]
Posted Sep 12, 2013 7:58 UTC (Thu)
by joib (subscriber, #8541)
[Link] (1 responses)
(The "proper" solution, I guess, is to just use the standard IPMI serial-over-lan console and forget about the proprietary GUI console. But that typically requires enabling the serial console in the BIOS and then setting up grub/whatever to do console redirection, so it's a few extra steps..)
Posted Sep 12, 2013 11:16 UTC (Thu)
by dskoll (subscriber, #1630)
[Link]
I can't figure out why server vendors don't let users just connect via any damn VNC client they please instead of having to use their crappy applet.
+1 to that. I manage a number of SuperMicro servers and while the ability to rebuild a server 200km away from bare metal is impressive, the Java console applet really is painful and horrible. Just let me use my normal VNC client!
Posted Sep 12, 2013 8:32 UTC (Thu)
by skitching (guest, #36856)
[Link] (6 responses)
A server-side app can *potentially* use the sandbox to isolate possibly hostile code running within the same process (eg an app running plugins provided by customers, which might try to mess with the app's internals). Oracle's database allows stored procedures to be implemented in Java; I wouldn't be too surprised to find that the database uses a sandbox to prevent such stored procedures from messing with too much. However the vulnerability linked to in the article (related to the 2D graphics API) is unlikely to be available ;-)
The sandbox is used extensively for applets, and this is where users can be bitten by these issues. However very few mainstream language even *attempt* to provide a sandbox environment in which totally untrusted code can be run; javascript in a browser is one - and that also has a regular stream of problems.
ActiveX doesn't bother with a sandbox at all. ActiveX relies on users "trusting" the publisher of the signed plugin; Java supports this model too : *plus* a sandbox.
Re the "banking applets" discussion below: presumably these applets are all *signed* by the bank that provides them. There is therefore no real issue; the user can trust the bank, and the sandbox is actually irrelevant. If a bank customer doesn't trust their bank sufficiently to install software signed by them, they should move to a different bank.
So in short: these security issues only bite people who install applets which are unsigned or signed by untrustworthy providers which *then* exploit a sandbox hole.
Having said that, I am partially guilty of the above from time to time. In particular, some concert/theatre ticket selling companies and airlines use graphical Java applets for seat-selection. Not all these applets are properly signed, and the providers aren't "high trust" companies like banks. However even then, I mostly trust these companies.
Posted Sep 12, 2013 16:01 UTC (Thu)
by luto (guest, #39314)
[Link]
Posted Sep 12, 2013 17:50 UTC (Thu)
by dps (guest, #5725)
[Link] (3 responses)
Instead Java allows you to decide which privileges on a small list the signature should confer: you could allow a signed applet to use your printer but not access your hard disc, modulo UI designers deeming this too complex for normal users and only supporting something simpler. This might mean that even a signed applet can print but can't find your M$ money installation and bill your credit card.
In terms of seat booking and similar application I can't see the need to do anything not permitted inside the sandbox. What beyond communicating with the originating server and drawing a pretty picture, which is activity allowed inside the sandbox, do these applications need? Most banking applications probably should not be doing much beyond that too.
Posted Sep 12, 2013 21:17 UTC (Thu)
by luto (guest, #39314)
[Link] (2 responses)
(I'm talking about JNLP apps here, which are more common in my industry. Actual applets are probably better.)
Posted Sep 13, 2013 18:34 UTC (Fri)
by jonabbey (guest, #2736)
[Link] (1 responses)
Posted Sep 21, 2013 10:57 UTC (Sat)
by luto (guest, #39314)
[Link]
Posted Sep 13, 2013 18:32 UTC (Fri)
by jonabbey (guest, #2736)
[Link]
The same dialog warns that in a future release of Java, non-signed / self-signed JNLP apps will just not work anymore. We've been self-signing our Ganymede client and admin console JNLP apps all along in the lab, but that's not going to be enough going forward.
It seems that Oracle has had enough bad press about Java, and are getting serious about tightening things up.
It'll be a hassle for us, having to get a code-signing cert, but maybe folks will change their mind about the safety / reliability of Java?
(spoiler: I don't really believe those who like to slam Java will change their minds ever at this point).
Posted Sep 12, 2013 14:20 UTC (Thu)
by jhhaller (guest, #56103)
[Link] (6 responses)
Posted Sep 12, 2013 20:44 UTC (Thu)
by luya (subscriber, #50741)
[Link]
Posted Sep 12, 2013 22:47 UTC (Thu)
by khim (subscriber, #9252)
[Link]
Posted Sep 14, 2013 1:17 UTC (Sat)
by marcH (subscriber, #57642)
[Link] (3 responses)
I only recently found the "click to play" feature in Chrome. I heard about it by chance. Whereas this perfect feature should be enabled by default it's completely buried way down in the settings: ridiculous.
On Firefox it's much worse since you have install the FlashBlock plugin. Is there even a "JavaBlock" Firefox plugin or better, a generic "click to play" plugin?
Posted Sep 14, 2013 2:19 UTC (Sat)
by Fowl (subscriber, #65667)
[Link] (1 responses)
https://blog.mozilla.org/security/2013/01/29/putting-user...
Posted Sep 14, 2013 19:55 UTC (Sat)
by marcH (subscriber, #57642)
[Link]
Posted Oct 16, 2013 16:08 UTC (Wed)
by wookey (guest, #5501)
[Link]
Posted Sep 21, 2013 19:40 UTC (Sat)
by gnu_andrew (guest, #49515)
[Link]
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
-- C.A.R Hoare
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Still, given how bad the situation with Java, I would not be surprised that after few successful fraud attempts against big customers, banks change their mind.
.exe
binary which must be installed with Admin privileges because it basically stops everything else on a system while it's running (it disables most network interfaces, removes all routes except routes needed to reach the server, freezes “suspicious programs”, etc).
BankId implementation uses that to check for common malware infections and to fingerprint the computer. Also, for malware it is harder to subvert their code. Banks do not want to give up on that yet.
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
http://asia.cnet.com/blogs/google-chrome-will-support-act...
http://en.wikinews.org/wiki/South_Korean_presidential_can...
http://www.w3.org/2012/webcrypto/
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Arguably, Java _is_ worse than e.g. Python, because the amount of boilerplate you need to write, e.g. for stuff like a simple iterator, easily dwarfs the code which actually does something.
Map<K,V> amap = ...;
for(K key: amap.keySet()) {
// Do something with key
}
String [] strings = ...;
for(String string: strings) {
// Do something with string
}
Not much boilerplate for simple iterators.
With a decent IDE, Java can be quite productive.
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
It's not using iterators that's hard, it's writing one.
It's not hard. It's three methods, and one of those (#remove()) is optional.
Here's an implementation of an array iterator. Works for any array:
public class ArrayIterator<T>
implements Iterator<T>
{
private int index = 0;
private final T[] array;
public ArrayIterator(T[] array)
{
this.array = array;
}
@Override
public boolean
hasNext()
{
return this.index < this.array.length;
}
@Override
public T
next()
{
if (this.index < this.array.length)
{
return this.array[this.index++];
}
throw new NoSuchElementException();
}
@Override
public void
remove()
{
throw new UnsupportedOperationException();
}
}
Not too difficult. Wordy, perhaps, but certainly not hard to write.
I'm sorry, you Java fanboys are just pathetic. Here's the C# source code to do the same thing:
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
public static IEnumerator<T> foo<T>(T[] bar) {
foreach(var x in bar)
yield return bar;
}
And of course it's easy to write this if all you're doing is iterating over an array. But things become much harder if you actually write an iterator that does something interesting. The C# (or Python) compiler actually helps you to get the control flow right, while Java is just in the way.
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Arrays.asList(1,2,3,4,5,6).stream().map(n -> n * n);
http://benchmarksgame.alioth.debian.org/
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
The problem with Scala and Clojure is that they are hampered by the inadequacies of the JVM.
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
And that list isn't even exhaustive.
foo instanceof Bar<Baz>
doesn't work)
ArrayList<Byte>
requires around 4 machine words per byte of payload) leading to hacks like GNU Trove or Scala's this
, yeah, that makes sense. Not.))
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Makes it literally impossible to implement a Scheme on top of the JVM, for example (the Scheme spec *requires* tail call optimization).
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
That's the kind of workaround I was referring to, it breaks for non-trivial cases, for example when it's not known at compile time which function implementation a call will end up in.
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
scala> import scala.annotation.tailrec
import scala.annotation.tailrec
scala> class Test {
| @tailrec def apply { apply }
| }
<console>:9: warning: method apply in class Test does nothing other than call itself recursively
@tailrec def apply { apply }
^
<console>:9: error: could not optimize @tailrec annotated method apply: it is neither private nor final so can be overridden
@tailrec def apply { apply }
^
It fails even for simple mutually recursive definitions:
scala> @tailrec def even(x: Int): Boolean = x == 0 || odd(x - 1); @tailrec def odd(x: Int): Boolean = x != 0 && even(x - 1)
<console>:10: error: @tailrec annotated method contains no recursive calls
@tailrec def even(x: Int): Boolean = x == 0 || odd(x - 1); @tailrec def odd(x: Int): Boolean = x != 0 && even(x - 1)
^
<console>:10: error: @tailrec annotated method contains no recursive calls
@tailrec def even(x: Int): Boolean = x == 0 || odd(x - 1); @tailrec def odd(x: Int): Boolean = x != 0 && even(x - 1)
It's not just about tail *recursion* optimization, it's about general tail *call* optimization. JVM modifications are needed to make this kind of thing work.
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Of course it's not literally impossible to implement full tail-call optimization on the JVM - it's just harder.
Kawa has long done so.
It uses a special calling convention, using a thread-specific CallContext object. This calling convention is optional, because it is slower, and doesn't interoperate with "native" Java as directly - you enable it
using an optional --full-tailcalls flag.
(Note you can mix code compiled with --full-tailcalls
and --no-full-tailcalls.)
(Also note that Kawa even with full tailcalls enabled is still
generally faster than Clojure.)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
(None, None)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Well, if you use Java6 with recent version of Firefox then Java applets are permanently disabled but you can enable them on specific website if you notice red lock in the location bar. This actually makes Java6 safer choice then Java7 for the users who only need Java for banks :-)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)
Security of Java takes a dangerous turn for the worse, experts say (ars technica)