in javafx Generic bubble sort The purpose of this exercise is to become familiar with sorting, the use of generics allowing one sort method to sort objects of many types, and how the Comparable and Comparator interfaces can allow the same objects to be sorted in different ways and/or different order. Implement the following two generic methods using bubble sort. The first method sorts the elements using the Comparable interface and the second uses the Comparator interface. public static <E extends Comparable<E>> void bubbleSort(E[] list) public static <E> void bubbleSort(E[] list, Comparator<? super E> comparator) The first method sorts the elements using the Comparable interface, and the second uses the Comparator interface. See: The Comparator Interface in chapter 20. 1. generate at least 9 random java.lang.Integer objects, 2. add the integer objects to an array 3. display the contents of the array 4. sort the array 5. display the contents of the array 6. create a Compartor that will sort in reverse order (highest to lowest value) 7. sort the array using the Comparator object 8. display the contents of the array 7. Repeat steps 1 - 8 using random Strings of random characters and random lengths (greater than 4 characters) 8. Repeat steps 1 - 8 using random java.util.Date objects (Hint: use the constructor that has a long value as a parameter).