The distributed (Δ + 1)-coloring problem is one of most fundamental and well-studied problems in Distributed Algorithms. Starting with the work of Cole and Vishkin in 86, there was a long line of gradually improving algorithms published. The current state-of-the-art running time is O(Δ log Δ+logz.ast; n), due to Kuhn andWattenhofer, PODC'06. Linial (FOCS'87) has proved a lower bound of 1/2 log* n for the problem, and Szegedy and Vishwanathan (STOC'93) provided a heuristic argument that shows that algorithms from a wide family of locally iterative algorithms are un-likely to achieve running time smaller than Θ(Δlog Δ). We present a deterministic (Δ+1)-coloring distributed algorithm with running time O(Δ)+ 1/2 log* n. We also present a tradeoff between the running time and the number of colors, and devise an O(Δ t)-coloring algorithm with running time O(Δ/t+log* n), for any parameter t, 1 < t ≤ Δ1-e, for an arbitrarily small constant e, 0 < e < 1. Our algorithm breaks the heuristic barrier of Szegedy and Vishwanathan, and achieves running time which is linear in the maximum degree Δ. On the other hand, the conjecture of Szegedy and Vishwanathan may still be true, as our algorithm is not from the family of locally iterative algorithms. On the way to this result we study a generalization of the notion of graph coloring, which is called defective coloring. In an m-defective p-coloring the vertices are colored with p colors so that each vertex has up to m neighbors with the same color. We show that an m-defective p-coloring with reasonably small m and p can be computed very efficiently. We also develop a technique to employ multiple defective colorings of various subgraphs of the original graph G for computing a (Δ + 1)-coloring of G. We believe that these techniques are of independent interest.