We study the edge-coloring problem in the message-passing model of distributed computing. This is one of the most fundamental problems in this area. Currently, the best-known deterministic algorithms for (2Δ -1)-edge-coloring requires O(Δ) + log*n time (Panconesi and Rizzi in Distrib Comput 14(2):97-100, 2001), where Δ is the maximum degree of the input graph. Also, recent results of Barenboim and Elkin (2010) for vertex-coloring imply that one can get an O(Δ)-edge-coloring in time, and an edge-coloring in O(log Δ log n) time, for an arbitrarily small constant > 0. In this paper we devise a significantly faster deterministic edge-coloring algorithm. Specifically, our algorithm computes an O(Δ)-edge-coloring in Δ + time, and an Δ 1 + edge-coloring in O(log Δ) + log*n time. This result improves the state-of-the-art running time for deterministic edge-coloring with this number of colors in almost the entire range of maximum degree Δ. Moreover, it improves it exponentially in a wide range of Δ, specifically, for 2 Ω(log*n) ≤ Δ ≤ polylog(n). In addition, for small values of Δ (up to log1 - δ n, for some fixed δ > 0) our deterministic algorithm outperforms all the existing randomized algorithms for this problem. Also, our algorithm is the first O(Δ)-edge-coloring algorithm that has running time o(Δ) + log*n, for the entire range of Δ. All previous (deterministic and randomized) O(Δ)-edge-coloring algorithms require time. On our way to these results we study the vertex-coloring problem on graphs with bounded neighborhood independence. This is a large family of graphs, which strictly includes line graphs of r-hypergraphs (i.e.; hypergraphs in which each hyperedge contains r or less vertices) for r = O(1), and graphs of bounded growth. We devise a very fast deterministic algorithm for vertex-coloring graphs with bounded neighborhood independence. This algorithm directly gives rise to our edge-coloring algorithms, which apply to general graphs. Our main technical contribution is a subroutine that computes an O(Δ/p)-defective p-vertex coloring of graphs with bounded neighborhood independence in O(p 2) + log*n time, for a parameter p, 1 ≤ p ≤ Δ. In all previous efficient distributed routines for m-defective p-coloring the product m· p is super-linear in Δ. In our routine this product is linear in Δ, and this enables us to speed up the algorithm drastically.