10.5.17

ORA-12714 invalid national character set specified

Error: ORA-12714

ORA-12714  invalid national character set specified 

ORA-12714 invalid national character set specified  is very common error and related to database parameters and sessions parameters.


Cause 

Only UTF8 and AL16UTF16 are allowed to be used as the national character set. Check your NLS_NCHAR_CHARACTERSET which is set using:

select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';

it should return UTF8 Or AL16UTF16

Action

Ensure that the specified national character set is valid

Please aware that at session level, some parameters could be different. If you want to be sure, compare the results of:

select * from nls_database_parameters;

with:

select * from nls_session_parameters;



Please find the below information:-    

Bug No :- 2834295 

Cause :-  declaring cursor for a function that returns a table of NVARCHAR2

 Affects below products :
Product (Component)
Oracle Server (Rdbms)
Range of versions believed to be affected
Versions BELOW 11.1
Versions confirmed as being affected
  • 10.2.0.3
  • 9.2.0.8
  • 9.2.0.2
Platforms affected
Generic (all / most platforms affected)

Fixed:

The fix for 2834295 is first included in
  • 11.1.0.6 (Base Release)
  • 10.2.0.4 (Server Patch Set)

Please check for document number on oracle support :-  2834295.8



4.4.17

Core Java Interview Questions

1) Explain run time polymorphism in Java ?
Polymorphism can be explained as an object's ability to adapt to the program's context and take multiple forms. The method overriding is an example of run time polymorphism. You can have a method in a subclass, which overrides the method in its superclasses with the same name and signature. At run time, Java virtual machine determines the appropriate method to be called.  
2) What are the rules (method access permission and exception) that needs to be followed, during method overloading and overriding ?

During method Overloading, method name should remain same. But method signature can vary. Components of signature that can vary are
  • Number of arguments
  • Datatype of arguments
  • Order of arguments
During method Overriding, make sure that the method is not throwing checked exceptions that are new or higher than those declared by the overridden method.But we can't override Static and Final methods.
3) What is the difference between an Interface and abstract class?
AbstractInterface
Supports Single inheritanceSupports Multiple inheritance
Supports abstract and Non-abstract methodsAllows only abstract methods
Supports Non-static and non-final variables also.Variables must be static and final(implicitly)
Supports non public memberOnly public members are allowed
Using extends keywordUsing implements keyword
It can invoke if main existsPure abstract
FasterFlexible


4) Explain the difference between compile-time and run-time polymorphism in Java?

Compile time PolymorphismRun time Polymorphism
Method are called at compile timeMethod are called at run time
Ex: OverloadingEx: Overriding


5) What is the difference between Overloading and Overriding ?

OverloadingOverriding
Methods are overloaded during compile timeMethod overriding takes place during runtime
All the overloaded methods should be placed in the same classWe can override methods in sub class
We can overload static methodsStatic methods can't be overridden
Methods are bonded together using static binding.Overridden method are bonded via dynamic bonding based upon actual Object.
To overload a method, method signature needs to be changedThere is no need to change the signature
Private and final method can be overloaded.Private and final method can't be overridden
Method is relatively fast.Method is relatively slow.

6) What is the difference between class and object ?
ClassObject
Template/Blue print of an object.It is an instance of a class. Object have states and behaviors.
A logical construct.A Physical reality.

7) What are the major object oriented concepts in Java ?
Abstraction
It denotes the critical properties of an object which differentiate from other object and thus provide crisply defined conceptual boundaries relative to the perspective viewer.

Encapsulation
Encapsulation can be explained as a mechanism which binds the code and the data it manipulates. It also keeps them safe from external intervention and misuse.

Inheritance:
One object inherits the properties and methods of another Object.

Polymorphism
It is an ability of an object to take on many forms. Ex: Compile time polymorphism – method over loading. Run time polymorphism – method overriding

8) Why Java is not supporting multiple inheritance ?


Main features of java are very Simple. if multiple inheritance is supported, it creates ambiguity around Diamond problem and it does complicate the design and creates problem during casting, chaining etc. So Java will support multi-inheritance via single inheritance with interfaces to overcome above issues.

9) What is meant by final keyword in Java ?
  • If final variable is used in front of variable, we can't change the value.
  • If the variable is used in front of method, it can't be overridden.
  • If it is used in front of Class, class can't be extended by any other class.

10) What is meant by static keyword in Java ?


A static is a member of a class that's not associated with instance. So static members can be accessed without creating an instance of a class.

11) What is meant by JVM ?
JVM(Java Virtual Machine) is a run time environment for the compiled java class files. Main function of JVM is to convert byte code(.class file) to machine code and send appropriate commands to underlying machine for execution.
12) What is the difference between interpreter and compiler in Java ?
CompilerInterpreter:
Compiler translates source code to JVM byte code.Executes the byte code by running the program.
Compiling happens when programmers invoke compiler after the program is writtem.Interpretation happens at run time
For compilation, use command "javac Employee.java". Compilation of java file will generate class file (ex: Employee.class).Command java Employee, executes the class file (i.e Employee.class)

13)  Can abstract class implements another interface ?

Yes. It's just a special case of implementation by which subclasses are forced to implement the methods.

14) Can abstract class extend another abstract class?
Yes. It is perfectly valid for an abstract class to extend another abstract class.
15) Can a interface extend another interface?
Yes. An interface can extend another interface in Java.
16) What Is Stack?
  • Each Java thread have a private JVM stack, created along with thread.
  • Stack stores frames. Frames are used for storing data (Variable and Object Data as well as partial results) and to perform operations such as
    • Dynamic linking
    • Dispatch exceptions when error occurs
    • Return values when methods are invoked. Since the stack can't be accessed directly, it push and pop frames.
  • It is not mandatory that the Java virtual machine stack had to be continuous.
  • JVM throws StackOverflowError, if any computation inside a thread needs larger JVM stack than allocated .

17) What Is Heap?
  • When JVM starts, heap is created
  • Heap is the runtime data area of the JVM
  • It is shared by all the threads inside the JVM
  • It allocates memory for all class instances and arrays
  • Heap storage for objects is reclaimed by garbage collector when it is not used.
  • JVM throws OutOfMemoryError, If a computation needs more heap than what can be supplied by the automatic storage management system.

18) Can you explain about Upcasting and Downcasting in Java ?
  • Upcasting : Casting a Sub class to Super class. Upcasting is called as widening.
  • Downcasting : Casting a Super class to Sub class. Downcasting is called as narrowing.

19) Can you explain about Implicit and Explicit type casting ?


Implicit casting (widening conversion)
 :

When JVM encounters a data type of lower size which occupies less memory, it is assigned to a data type of higher size implicitly by the JVM. This is also known as automatic type conversion. For Example
int i = 1; // 4 bytes
double d = i; // 8 bytes

Explicit casting:


When a data type of higher size which occupies more memory, needs to be assigned to a data type of lower size, it is called explicit casting. This type of casting won't be done implicitly by the JVM. This casting operation should be performed by the programmer. For example 
double d = 1.0; 
int i = (int) d;

20) Can you explain about markable interface in Java ?
Interfaces with no methods are known as Marker interface. Some of the markable interfaces are
 java.lang.Cloneable
 java.io.Serializable
 java.util.EventListener

21) Can you explain about reflection in Java ?

If a programmer wants to access entities or invoke methods in a program dynamically, i.e. if the programmer is unaware of the methods and variables that needs to be invoked at runtime but unaware of it while coding, we can use reflection. For example
Method method = ABC.getClass().getMethod("doSomething", null);
method.invoke(ABC, null);
22) Can you explain about java.lang.class ?

When JVM creates an instance of a class, it creates an object "java.lang.Class object" which describes the type of the object. This class object is shared by all the objects of a class. If you want to access the class object of an instance, use getClass() method of the object. This method is inherited from java.lang.Object
Ex: Created two instances class called Programmer
Programmer A = new Programmer();
Programmer B = new Programmer();
// For check Instances
if(A.getClass() == B.getClass())
{
 System.out.println("A and B are instances of same class");
}else{
 System.out.println("A and B are instances of different class");
}

23) Can you explain about Singleton class in Java ?


Singleton class is used to control no of object created for a class, limiting the number to one. But if the situation changes in future, it allows to create more objects without affecting existing clients.

24) Can you explain about Static class in Java ?


A class can be made static provided that the class is a nested class. A nested class is class which is defined inside a class. But top class can't me made static. Example :
public class Test
{ 
 static class StaticInnerClass
 {
 public static void innerMethod()
 { System.out.println("Static Inner Class!"); }
 } 
 public static void main(String args[])
 {
 Test.StaticInnerClass.innerMethod();
 }
}

25) Can you explain about volatile Keywords in Java ?
  • Volatile keyword is used to indicate the threads using a common variable that, the variable which is declared as Volatile can be updated by multiple threads. So threads should not cache the threads locally and in turn should get the value for the variable from main memory. 
  • If a variable is declared as volatile, it won't be serialized.

26) What are the advantages of organizing classes and interfaces into a package ?
  • Determination of a category of a file is simplified.
  • Name space collision is avoided.
  • Access restriction can be applied with the use of packages.
  • Packages provide reusability of code

27) Can you explain about Java naming convention ? 


Common Naming conventions as below :
  • package names always start with lowercase characters. Ex: java.util
  • Class names always begin with a capital letter and followed next word start with a capital letter. Ex: GregorianCalendar
  • Java Naming convention specifies that instances and other variables must start with lowercase followed next word should be capital letter. Ex : MyClass myClass = new MyClass();
  • Constant variables are declared using “static final” modifiers. And such variables must contain only UpperCase charachters and multiple words must be seperated using ‘_’. Ex: static final char END_OF_FILE = 'e';
  • Methods in Java also follow the same like Objects and variables. For example
void myMethod(){
String strVal = "ABCD";
}
28) How to call a garbage collector in java?
System.gc() or Runtime.getRuntime().gc().

29) What are the new features available in Java 1.7 ?
  • Strings in switch Statement 
  • Type Inference for Generic Instance Creation 
  • Multiple Exception Handling 
  • Support for Dynamic Languages 
  • Try with Resources 
  • Java nio Package 
  • Binary Literals, underscore in literals 
  • Diamond Syntax 
  • Automatic null Handling

30) What are the advantage of Inheritance in Java ?
  • Re-usability : Inheritance helps derived class to use methods of base class without rewriting them
  • Extensibility : Extending the base class logic as per business logic of the derived class
  • Data hiding : Allows base class to keep some private data which can't be altered by the derived class

31) Why String is immutable in Java ?
String is a special type of immutable class. Immutable class is a class which once created, it’s contents can not be changed. Immutable objects are the objects whose state can't be changed once constructed.

32) Can you explain about information hiding in Java ?


Information hiding helps objects to hide critical information from other other objects accessing it. It effectively decouples the method being invoked from the internal workings of a function. By doing so, object can change the hidden portions of the function without changing the calling code. Encapsulation is a common technique programmers use to implement information hiding.

33) Can you explain about encapsulation in Java ?


Encapsulation helps java to bind code and data it manipulates, restrict outside interference and misuse of data. It also hides irrelevant details of an object.

34) Can you explain about the access modifier in Java ?


Access modifiers specifies the access levels of a variable or method. Java access modifiers are public, private, protected, default modifier (Default access modifier).
Access ModifiersSame ClassSame PackageSubclassOther packages
publicYesYesYesYes
protectedYesYesYesNo
defaultYesYesNoNo
privateYesNoNoNo

35) What is the difference between super() and this() in Java ?
If you want to access methods of the base class from derived class "super" keyword is used. To access methods of the same class "this" keyword is used.

36) Can you explain about the constructor in Java ?
  • Java constructors are special methods that are called when an object is instantiated. 
  • When objects are instantiated, arguments passed to the constructor will initialized the variables in an object. 
  • Name of the constructor should be same as the name of the Class. It can't have any return type.
  • A class can have multiple constructors. Calling a constructor from another constructor in the same class is called Constructor chaining. 
  • All classes have a default empty constructor.

37) Can constructor take parameters ?


Yes. Constructor can take arguments.

38) Can you explain about the default constructor in Java ?


When a constructor is not specified explicitly, java compiler automatically creates a "Default Constructor". When we creates and object instance, default constructor initialize variables with it's default values. 

39) What are the common reasons to define a default constructor ?
  • To construct an object with default values. 
  • To initialize an object that doesn't need parameters in that initialization process. 
  • To redefine the scope of the constructor. By making the default constructor private, Java prevents everyone other than the class from constructing an object.

40) Can you explain about native method in Java ?
  • Native is non access modifier. It can be applied only to method. 
  • It indicates the Platform-Dependent implementation of method or code.

41) Can you explain about strictfp keyword in Java ?
If we want floating point values to be consistent across platforms, then we need to use "strictfp" as per IEEE 754 standard. When a program runs on multiple platforms, precision of floating point differ which in turn given different results. strictfp helps to enforce the precision across all platforms. For example
Class Level - public strictfp class StrictFpModifierExample{}
Method Level - public strictfp void example() {}

42) Can you explain about String pool ?


String Pool is a pool of strings stored in Java heap memory. String objects can be created either by new operator or by specifying the values in double quotes. 
Case 1 : When a new string is created using double quotes, JVM searches string pool for the string with the same value. if it finds a string which matches the values, it will return the reference of the string. Else it will create a new string in the pool and returns that reference.
String s1 = "Cat"; 
String s2 = "Cat"; 
if(s1 == s2) System.out.println("equal"); //Prints equal.
Case 2 : When new operator is used to create a string, String class will be forced to create a new String object. To put the newly created string into the pool or assign it to another string, use intern(). 
String n1 = new String("ABCD"); 
String n2 = new String("ABCD"); 
if(n1 == n2) System.out.println("equal"); //No output.

43) Differences between String, StringBuffer and StringBuilder in Java ?

StringStringBufferStringBuilder
ImmutableMutablemutable
String operations such as append would be less efficientString operations such as append would be more efficient,String operations such as append would be more efficient
-synchronizedNot synchronized.
-versions 1.4 or below you’ll have to use StringBuffer.StringBuilder was introduced in Java 1.5

44) What are the advantage of using unicode characters ?
  • Much larger number of characters or group of characters
  • Contains some non western European characters
  • Supported by all modern technologies
  • Enhance integration opportunities
  • Easy conversion from legacy code pages

45) Can you explain about literals in Java ?


Literals are used to represent a fixed value in source code. Literals don't require computation. For Example, we will have a look at using literals to assign a value to an int variable.
int Days = 7;
46) Is it possible to override an overloaded method in Java ?
Yes. We can override an overloaded method if that method in not a static or final.

47) What is the maximum size of an int ?


-(2 power 31) to (2 power 31-1) or -2,147,483,648 to 2,147,483,647

48) Can you explain about autoboxing and unboxing in Java ?


When primitive data types are automatically converted into it's  wrapper type, it is called boxing. The opposite operation of converting wrapper class objects to it's primitive type is known as unboxing.
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1); //autoboxing - primitive to object
int number = list.get(0); // unboxing

49) How to change the heap size of a JVM ?
 

The old generation's default heap size can be overridden by using the -Xms and -Xmx switches to specify the initial and maximum sizes respectively:
Format - java -Xms <initial size> -Xmx <maximum size> program
Example - java -Xms64m -Xmx128m Myprogram

50) Is it possible to have multiple public classes in Java ?
As per java language specification, there can be only one public class in a file (.java) and file name should be same as public class name. If you want another class accessible in other places, you may create a separate java file.

51) Write a program that override equal() and hashcode()?


Object's hash code is a number( 32-bit signed int) that helps hash-based data structure to manage an object. Hash code is supposed to be unique number assigned to an object by JVM. But if two objects are equals, then both the objects will have same hash code. Implementation of hashcode method in a class should be in such way that if two objects are same and when compared by equal method, then those two objects must return same hash code. Both hashCode and equals method should be overridden.
class Person{
 private String name;
 private int age; 
 public Person(String name, int age){
 this.name = name;
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }
 
 public int hashCode(){
 int hashcode = 0;
 hashcode = age*12;
 hashcode += name.hashCode();
 return hashcode;
 }
 
 public boolean equals(Object personObject){
 if (personObject instanceof Person) {
 Person pp = (Price) Person;
 return (pp.name.equals(this.name) && pp.age == this.age);
 } else {
 return false;
 }
 }
}

52) Can you explain about Enum datatype in Java ?


Enum keyword is used to represent a fixed number of related values. Since enum constants are implicitly static and final,there values can't be changed once they are created.
public enum Day {
 SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY 
}
// Uses 
public void weekDay() {
 switch (day) {
 case MONDAY:
 System.out.println("Mondays are bad.");
 break;
 }
}

53) Can you explain about the recursion ?
The function called itself is called recursion. For example, a factorial program
int factorial(int number) {
 if(number == 0) {
 return 1;
 }
 factorial_i(number, 1);
}
int factorial_i(int currentNumber, int sum) {
 if(currentNumber == 1) {
 return sum;
 } else {
 return factorial_i(currentNumber - 1, sum*currentNumber);
 }
}

54) Can you explain about call by value and call by reference ?
  • Call by Value - When a method receives a value as an argument, the value received is a copy of the original value of the calling method. Even if the value is altered inside the method, it won't be reflected in the variable in the calling method.
  • Call by reference - When a method receives reference of a variable, any change made to it in the called method won't be reflected in the calling method.

55) What is responsibility of Garbage Collector ?
For efficient memory utilization, Java uses Garbage collector. The main objective of the garbage collector is free up memory by detecting unused objects and deleting them. Garbage Collector gets invoked automatically and it won't assure required memory for a program to run.

56) What is the use of finalize method ?
The Object class has a special method named finalize() that is called by garbage collector to allow an object to do the necessary cleanup that needs to occur before the memory used by the object are reclaimed. The finalize() method can be overridden by any class that uses system resources (file , db connection) and needs to release those resources or to perform other cleanup as part of implicit destruction by the garbage collector.

57) Explain JDBC ?
Java Database Connectivity is a technique of connect java front end to back end database and allowing the retrieval and manipulation of data in the database using java.

58) How do you connect to the Database ?
The process of using JDBC to connect to the database is as follows:
Register the driver: Class.forName(”driverName”); For example, sun.jdbc.odbc.JdbcOdbcDriver
Connection con = DriverManager.getConnection(”url,”myLogin”,myPassword”);
For example url may be jdbc:odbc:dsn_name.

Creating the JDBC Statement and Retreiving:
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);

59) What are the drivers and when it will use ?
  • JDBC-ODBC Bridge Driver for Java and Database (Java Application)
  • JDBC-Net pure java driver for Applet and Database(Applet application)
  • Native-API partly Java driver for Native class and Database (for network application)
  • Native Protocol pure java driver for vendor specific application (EJB application)

24.3.17

Java Vs Nodejs


In the history of computing, 1995 was a crazy time. First Java appeared, then close on its heels came JavaScript. The names made them seem like conjoined twins newly detached, but they couldn't be more different. One of them compiled and statically typed; the other interpreted and dynamically typed. That's only the beginning of the technical differences between these two wildly distinct languages that have since shifted onto a collision course of sorts, thanks to Node.js.
If you’re old enough to have been around back then, you might remember Java’s early, epic peak. It left the labs, and its hype meter pinned. Everyone saw it as a revolution that would stop at nothing less than a total takeover of computing. That prediction ended up being only partially correct. Today, Java dominates Android phones, enterprise computing, and some embedded worlds like Blu-ray disks.


For all its success, though, Java never established much traction on the desktop or in the browser. People touted the power of applets and Java-based tools, but gunk always glitched up these combinations. Servers became Java’s sweet spot.
Meanwhile, what programmers initially mistook as the dumb twin has come into its own. Sure, JavaScript tagged along for a few years as HTML and the Web pulled a Borg on the world. But that changed with AJAX. Suddenly, the dumb twin had power.


Then Node.js was spawned, turning developers’ heads with its speed. Not only was JavaScript faster on the server than anyone had expected, but it was often faster than Java and other options. Its steady diet of small, quick, endless requests for data have since made Node.js more common, as Web pages have grown more dynamic.
While it may have been unthinkable 20 years ago, the quasi-twins are now locked in a battle for control of the programming world. On one side are the deep foundations of solid engineering and architecture. On the other side are simplicity and ubiquity. Will the old-school compiler-driven world of Java hold its ground, or will the speed and flexibility of Node.js help JavaScript continue to gobble up everything in its path?

Where Java wins: Rock-solid foundation

I can hear the developers laughing. Some may even be dying of heart failure. Yes, Java has glitches and bugs, but relatively speaking, it's the Rock of Gibraltar. The same faith in Node.js is many years off. In fact, it may be decades before the JavaScript crew writes nearly as many regression tests as Sun/Oracle developed to test the Java Virtual Machine. When you boot up a JVM, you get 20 years of experience from a solid curator determined to dominate the enterprise server. When you start up JavaScript, you get the work of an often cantankerous coalition that sometimes wants to collaborate and sometimes wants to use the JavaScript standard to launch passive-aggressive attacks.

Where Node wins: Ubiquity

Thanks to Node.js, JavaScript finds a home on the server and in the browser. Code you write for one will more than likely run the same way on both. Nothing is guaranteed in life, but this is as close as it gets in the computer business. It's much easier to stick with JavaScript for both sides of the client/server divide than it is to write something once in Java and again in JavaScript, which you would likely need to do if you decided to move business logic you wrote in Java for the server to the browser. Or maybe the boss will insist that the logic you built for the browser be moved to the server. In either direction, Node.js and JavaScript make it much easier to migrate code.


Where Java wins: Better IDEs

Java developers have Eclipse, NetBeans, or IntelliJ, three top-notch tools that are well-integrated with debuggers, decompilers, and servers. Each has years of development, dedicated users, and solid ecosystems filled with plug-ins.
Meanwhile, most Node.js developers type words into the command line and code into their favorite text editor. Some use Eclipse or Visual Studio, both of which support Node.js. Of course, the surge of interest in Node.js means new tools are arriving, some of which, like IBM’s Node-RED offer intriguing approaches, but they're still a long way from being as complete as Eclipse. WebStorm, for instance, is a solid commercial tool from JetBrains, linking in many command-line build tools.
Of course, if you're looking for an IDE that edits and juggles tools, the new tools that support Node.js are good enough. But if you ask your IDE to let you edit while you operate on the running source code like a heart surgeon slices open a chest, well, Java tools are much more powerful. It's all there, and it's all local.

Where Node wins: Build process simplified by using same language

Complicated build tools like Ant and Maven have revolutionized Java programming. But there's only one issue. You write the specification in XML, a data format that wasn't designed to support programming logic. Sure, it's relatively easy to express branching with nested tags, but there's still something annoying about switching gears from Java to XML merely to build something.

Where Java wins: Remote debugging

Java boasts incredible tools for monitoring clusters of machines. There are deep hooks into the JVM and elaborate profiling tools to help identify bottlenecks and failures. The Java enterprise stack runs some of the most sophisticated servers on the planet, and the companies that use those servers have demanded the very best in telemetry. All of these monitoring and debugging tools are quite mature and ready for you to deploy.

Where Node wins: Database queries

Queries for some of the newer databases, like CouchDB, are written in JavaScript. Mixing Node.js and CouchDB requires no gear-shifting, let alone any need to remember syntax differences.
Meanwhile, many Java developers use SQL. Even when they use the Java DB (formerly Derby), a database written in Java for Java developers, they write their queries in SQL. You would think they would simply call Java methods, but you’d be wrong. You have to write your database code in SQL, then let Derby parse the SQL. It's a nice language, but it's completely different and many development teams need different people to write SQL and Java.

Where Java wins: Libraries

There is a huge collection of libraries available in Java, and they offer some of the most serious work around. Text indexing tools like Lucene and computer vision toolkits like OpenCV are two examples of great open source projects that are ready to be the foundation of a serious project. There are plenty of libraries written in JavaScript and some of them are amazing, but the depth and quality of the Java code base is superior.

Where Node wins: JSON

When databases spit out answers, Java goes to elaborate lengths to turn the results into Java objects. Developers will argue for hours about POJO mappings, Hibernate, and other tools. Configuring them can take hours or even days. Eventually, the Java code gets Java objects after all of the conversion.
Many Web services and databases return data in JSON, a natural part of JavaScript. The format is now so common and useful that many Java developers use the JSON formats, so a number of good JSON parsers are available as Java libraries as well. But JSON is part of the foundation of JavaScript. You don't need libraries. It's all there and ready to go.

Where Java wins: Solid engineering

It's a bit hard to quantify, but many of the complex packages for serious scientific work are written in Java because Java has strong mathematical foundations. Sun spent a long time sweating the details of the utility classes and it shows. There are BigIntegers, elaborate IO routines, and complex Date code with implementations of both Gregorian and Julian calendars.
JavaScript is fine for simple tasks, but there’s plenty of confusion in the guts. One easy way to see this is in JavaScript’s three different results for functions that don't have answers: undefinedNaN, and null. Which is right? Well, each has its role -- one of which is to drive programmers nuts trying to keep them straight. Issues about the weirder corners of the language rarely cause problems for simple form work, but they don't feel like a good foundation for complex mathematical and type work.

Where Node wins: Speed

People love to praise the speed of Node.js. The data comes in and the answers come out like lightning. Node.js doesn't mess around with setting up separate threads with all of the locking headaches. There's no overhead to slow down anything. You write simple code and Node.js takes the right step as quickly as possible.
This praise comes with a caveat. Your Node.js code better be simple and it better work correctly. If it deadlocks, the entire server could lock up. Operating system developers have pulled their hair out creating safety nets that can withstand programming mistakes, but Node.js throws away these nets.

Where Java wins: Threads

Fast code is great, but it's usually more important that it be correct. Here is where Java’s extra features make sense.
Java's Web servers are multithreaded. Creating multiple threads may take time and memory, but it pays off. If one thread deadlocks, the others continue. If one thread requires longer computation, the other threads aren’t starved for attention (usually).
If one Node.js request runs too slowly, everything slows down. There's only one thread in Node.js, and it will get to your event when it's good and ready. It may look superfast, but underneath it uses the same architecture as a one-window post office in the week before Christmas.
There have been decades of work devoted to building smart operating systems that can juggle many different processes at the same time. Why go back in time to the ’60s when computers could handle only one thread?

Where Node wins: Momentum

Yes, all of our grandparents' lessons about thrift are true. Waste not; want not. It can be painful to watch Silicon Valley’s foolish devotion to the “new” and “disruptive,” but sometimes cleaning out the cruft makes the most sense. Yes, Java can keep up, but there's old code everywhere. Sure, Java has new IO routines, but it also has old IO routines. Plenty of appletand util classes can get in the way.