C++ Templates and Concepts vs. Java's Genericity Michal Revucky This talk is about generic programming. Modern object-oriented languages like Java or C++ provide generic programming. Genericity under C++ is implemented as templates. C++ concepts is an upgrade of C++ templates. The functional language Haskell provides genericity, too. Generic programming is mainly used to implement and provide reusable libraries, but also in other application areas. For example, genericity can be used when dealing with binary methods. A C++ technique -- Policy Based Programming -- exploits C++ templates. The main goal is to find out whether generic programming in Java and C++ allows us to create high quality programs. We want to find out which programming language provides genericity so that this particular language allows us to create a program with higher quality than a program implemented using genericity in the other language. We compare programs in the mentioned languages. As basis of the comparison we describe two problems. The first problem is called PBMJCH and the second AVA. PBMJCH focuses on binary methods and generic programming. PBMJCH is implemented in Java, C++ and also Haskell. The second problem (AVA) is implemented in C++ using Policy Based Programming. We create an alternative implementation of AVA in Java. We compare the implementations of AVA to find out whether the Java or C++ implementation has higher quality. We learned from this work that there is not much difference between Java and C++ concerning maintainability. In general, C++ allows us to create programs which run faster than their equivalent implementations in Java. The Java implementation of AVA is more portable than its C++ counterpart.